【技术控】Centos安装Postfix,代替sendmail发送邮件[LNMP环境]

  • A+
所属分类:技术控

这两天忙于为福利档社区更换VPS服务器。新系统自然各方面运行环境都要重新配置一遍。不断学习和折腾,档主已经喜欢上了LNMP这套简单的系统环境组合。

虽然比起那些所谓的面板来说,少了可视化的操作界面,但是各种操作都直面代码和最基础的服务,不仅简单粗暴,而且多余的资源占用更少,能将空闲出来的系统资源用于访客浏览和网站运行。

Discuz!系统有个邮箱认证功能,但是换新VPS,会员反馈收取不到认证邮箱,后台测试也提示“邮件发送返回错误信息”。查看了一下,估计是PHP的sendmail函数有问题。因为新系统可能并没有安装sendmail组件或者sendmail配置有问题不能正常运行工作。

对此,比较好的解决办法就是:

先查看VPS是否有安装sendmail

rpm –q sendmail

检测如果显示未安装该组件,请先安装Sendmail,代码如下:

yum install sendmail

yum install sendmail-cf

当然,这不是今天的主题。今天档主要推荐另一款比较优秀的 Linux 下 MTA(邮件传输代理)软件,可以代替sendmail。这也是档主目前正在使用的sendmail组件——Postfix。

postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。

postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。

在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真是一个让人吃惊的数字。

Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。

Postfix内部收信流程图

【技术控】Centos安装Postfix,代替sendmail发送邮件[LNMP环境]

Postfix内部发信流程图

【技术控】Centos安装Postfix,代替sendmail发送邮件[LNMP环境]

另外,也在网上看到有朋友反映 sendmail 发送邮件很慢。所以最终在福利档社区的VPS主机上没有选择它。

关于Postfix的安装和设置,参考了来自@倡萌的文章《LNMP笔记:Centos下安装Postfix,替换sendmail发送邮件》。

环境:CentOS6.5 64bit(以下所有指令建议在SSH软件,例如PuTTy下运行)

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.fulidang.com

mydomain = fulidang.com

myorigin = $mydomain

inet_interfaces = all

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mynetworks = 192.168.100.10/28, 127.0.0.0/8

relay_domains =

home_mailbox = Maildir/

以上几个设置项不在同一个位置,需要分别寻找并进行更改。其中相应的域名请改为自己的地址,mynetworks未做改变。

也可以将main.cf文件下载到本地,使用例如Notepad++等的代码编辑软件进行修改,这个方法对不了解Linux下的文本编辑软件的朋友简单方便更有效。

该配置信息来自@朱茂海(公子府)的博客,原文《Centos下安装Postfix,替换sendmail》,以上几项的含义解释也来自该网站,感谢作者提供。

配置文件解释:

mydomain : mydomain参数是指email服务器的域名,请确保为正式域名(如centos.bz)

myhostname : myhostname参数是指系统的主机名称(如我的服务器主机名称是mail.centos.bz)

myorigin:myorigin参数指定本地发送邮件中来源和传递显示的域名。在我们的例子中,mydomain是centos.bz,也是我的域名。

对于下面的一行,我们的邮件地址是[email protected]而不是[email protected]。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

整个软件安装配置过程到此结束。

如果VPS在之前没有配置过 sendmail 组件,那么很可能没有修改 php.ini 的邮件发送路径,那样可能无法发送邮件。所以此时还需要配置php.ini,填写sendmail的绝对路径。

1、使用命令打开编辑php.ini:

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

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

;sendmail_path =

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

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

4、按 Esc 键退出编辑,输入 :wq 保存退出。这里同样可以将 php.ini 文件下载到本地进行修改。

5、最后重启 php-fpm 进程

/etc/init.d/php-fpm restart

档主

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: