其实写这一篇文章是滥竽充数的,因为根本没有一个试验成功的方法。不过感觉大家的方法和思路还是对的,所以就先记录下来,也许是自己的系统有点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\nFrom: 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"

另外要注意的地方是sendmail_path只在unix下有效。不知道linux是不是有效?