其实写这一篇文章是滥竽充数的,因为根本没有一个试验成功的方法。不过感觉大家的方法和思路还是对的,所以就先记录下来,也许是自己的系统有点bug吧,如果没有用人家的一键包的,可以自己尝试下,应该会有点思路,不保证可以哦,只是收集了网上的。
先来说一下情况,出现的可能是(由 root@localhost.localdomain 代发),这样的提醒。 1、更改hostname可以修改相应的localhost.localdomain为hostname。 2、如果不想改,可以通过在命令行发送的时候指定发件人地址
echo -e "To: xxxx@gmail.com" | sendmail -f user@XXX.com -t -i
或者
echo -e "To: xxxx@gmail.com From: user@XXX.com" | sendmail -t
那么收件箱显示的发件人是user@XXX.com
3、如果你是用php内置函数通过sendmail发送信件的话,可以在php.ini中修改:
sendmail_path = /usr/sbin/sendmail -fuser@XXX.com -t -i
注意-f和后面user@XXX.com中间没有空格。
上面出现root@localhost.localdomain中的root是这样解释的。sendmail发送邮件时,如果没有指定附加参数,默认它会把当前主机名作为邮件服务器、 以及命令它发邮件的Linux用户名作为发件者,加入到邮件头部信息。
如果不想修改网站程序,也可以通过设置php.ini来实现。在php.ini中设置sendmail_path为如下的形式:
sendmail_path = /usr/sbin/sendmail -t -i -f'user@XXX.com'
有网上的说,必须-f在前面,否则不生效,一直没有测试成功,所以也不确定。
另外大家可以搜一下"php_admin_value sendmail_path",似乎这个东西也可以设置,不知道是不是虚拟主机用的。
详细如下: php-fpm配置
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f user@XXX.com //设置php mail发送
还有一个似乎是apache的虚拟主机设置,此处也可以设置sendmail_path。
将sendmail_path参数 在虚拟主机里面的设置:
ServerAdmin admin@XXX.com documentRoot "F:/web/website/XXX/www/" ServerName www.XXX.com ErrorLog "logs/www.XXX.com-error.log" CustomLog "logs/www.XXX.com-access.log" common php_admin_value sendmail_path "F:/web/sendmail/sendmail.exe -t -i"