关于sendmail发邮件出现由某某代发的解决方法

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

10 Comments
  1. 囧~ 我发现我看不懂这是啥东东了

    1. 其实结果是我没弄成,只在网上找到了些方法。你那网站是什么东西,破解?这是在做推广么

      1. ➡ 囧。我那是破解软件下载。。。。 ~~ 😮 尼玛~~~ 我是Yusky。 推个毛。 那个站我从来木做过推广~懒的去推

        1. 呵呵,看头像是Yusky哈,但是留的主页是个破解软件下载嘛,嘿嘿。

          1. 蛋了个疼。。。换个身份留言嘛~~ 💡

            1. 呵呵,果真蛋疼嘛

          2. 尼玛~~ 我发现只能5层回复~~ 太少了啊~~

            我现在住要就搞这个站啊。 没事干

            1. 额,没注意过,不折腾……

  2. :mrgreen: 我直接配置了postfix,改了php.ini。。

    1. 呵呵,应该也可以的哈

Leave a Reply

Time limit is exhausted. Please reload the CAPTCHA.