阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

LNMP笔记:Centos下安装Postfix,替换sendmail发送邮件

189次阅读
没有评论

共计 2572 个字符,预计需要花费 7 分钟才能阅读完成。

站长以前介绍过 使用 sendmail 发送邮件,但是  sendmail 发送邮件很慢,要解决这个问题,可以试试 sendmail 无法发送邮件及发送过慢等相关问题。站长这里主要是想利用 Postfix 替换 sendmail 组件,因为据说 Postfix 的效率更高些。测试环境为阿里云的 Centos 5.4 32 位系统,演示的域名为 wpdaxue.com,请更换为自己的实际域名。

1、如果装了 sendmail 的话,先卸载了。

yum remove sendmail

2、安装 Postfix

yum install postfix

3、更改默认 MTA 为 Postfix:

/usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix

4、完事儿,再次检查下是否将 MTA 改为 Postfix 了:

alternatives --display mta

5、配置 Postfix,vi 编辑 main.cf

vi /etc/postfix/main.cf

打开后分别找到以下几项,将其前面的 #去掉,并做配置:

myhostname = mail.wpdaxue.com
    mydomain = wpdaxue.com
    myorigin = $mydomain
    inet_interfaces = all
    inet_protocols = ipv4
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    mynetworks = 192.168.100.10/28, 127.0.0.0/8
    relay_domains =
    home_mailbox = Maildir/

以上几个设置项不在同一个位置,需要分别寻找,并进行更改,其中相应的域名请改为自己的地址,mynetworks 我是没有做改变,自动就有的。我刚开始也是配置错了导致安装失败,后来在 @朱茂海 的博客找到该答案,以上几项的含义解释也来自该网站,感谢作者提供。

配置文件解释:
mydomain:
mydomain 参数是指 email 服务器的域名,请确保为正式域名(如 centos.bz)
myhostname:
myhostname 参数是指系统的主机名称(如我的服务器主机名称是 mail.centos.bz)
myorigin:
myorigin 参数指定本地发送邮件中来源和传递显示的域名。在我们的例子中,mydomain 是 centos.bz,也是我的域名。
对于下面的一行,我们的邮件地址是 user@centos.bz 而不是 user@mail.centos.bz。
myorigin = $mydomain
mynetworks:
mynetworks 参数指定受信任 SMTP 的列表,具体的说,受信任的 SMTP 客户端允许通过 Postfix 传递邮件。
mydestination:
mydestination 参数指定哪些邮件地址允许在本地发送邮件。这是一组被信任的允许通过服务器发送或传递邮件的 IP 地址。用户试图通过发送从此处未列出的 IP 地址的原始服务器的邮件将被拒绝。
inet_interfaces:
inet_interfaces 参数设置网络接口以便 Postfix 能接收到邮件。
relay_domains:
该参数是系统传递邮件的目的域名列表。如果留空,我们保证了我们的邮件服务器不对不信任的网络开放。
home_mailbox:
该参数设置邮箱路径与用户目录有关,也可以指定要使用的邮箱风格。

6、检测并启动 Postfix

service postfix status // 检测,若已启动会列出其 PID,如下:master (pid 25579) is running...

// 若未启动,执行以下命令:service postfix start

7、设置开机启动

chkconfig postfix on

我自己的安装到此为止就结束了,因为我只需要的是 mail 功能,并非搭建邮件服务器。此时测试邮件发送,OK。

参考资料:http://www.gongzi.org/centos-install-postfix-sendmail.html

8、补充:如果你之前没有配置过 sendmail 组件,那你很可能没有修改 php.ini 的邮件发送路径,那样可能无法发送邮件。

所以你需要配置 php.ini,填写 sendmail 的绝对路径:

使用命令打开编辑 php.ini

vi /usr/local/php/etc/php.ini

输入?sendmail_path 查找定位(或者手动跳转找到 sendmail_path),你会发现默认是下面的代码

;sendmail_path =

按 i 进入编辑,将这行修改为

sendmail_path = /usr/sbin/sendmail -t -i

按 Esc 键退出编辑,输入 :wq 保存退出

重启 php-fpm 进程

/etc/init.d/php-fpm restart

9、补充 2:通过以上配置,就可以正常发送邮件了,但是发件人邮箱会是 www@wpdaxue.com 这种类型,如果想修改 www 这个参数,比如修改为 admin@wpdaxue.com 需要按照下面的步骤操作:

编辑 /etc/postfix/canonical:

vi /etc/postfix/canonical

添加下面类型的代码:

www admin@wpdaxue.com

保存退出,然后进入到 /etc/postfix/ 目录:

cd /etc/postfix/

执行命令:

postmap canonical

接着编辑 /etc/postfix/main.cf:

vi /etc/postfix/main.cf

一般情况下里面没有 canonical_maps 这个参数, 在空行处添加:

canonical_maps = hash:/etc/postfix/canonical

保存退出,然后重启 postfix:

postfix reload

再次发送邮件测试,奇迹应该就发生啦!

10、补充 3:通过上面的设置,虽然可以正常发送邮件,但是建议添加 DNS 解析,以减少被判定为垃圾邮件的几率。通常需要添加 3 个解析:A 记录、MX 记录、TXT 记录,比如这里的 wpdaxue.com 域名的解析如下:

LNMP 笔记:Centos 下安装 Postfix,替换 sendmail 发送邮件

这样就好多了,最后,推荐使用下面的网站来测试你的服务器发送的邮件所得分数,它会给出详细的测试结果和改进方法:

http://www.mail-tester.com

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计2572字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中