余读

在 CentOS6.x 上部署 Postfix 邮件服务器

在开始前,最好弄清以下几个问题:

  1. Mail Server 能否運作與 DNS ( MX 與 A recode )的相關性為何?
  2. 什麼是 MTA, MUA, MDA 與 Mail box, Mailing list 等相關的術語,及其內容所代表的意義!
  3. 什麼是 smtp, pop3 以及 imap 協定,他們的用途分別是什麼?
  4. 什麼是 Relay 與 Open Relay ?
  5. 什麼是 SMTP 郵件認證?
  6. 什麼是郵件的別名與轉遞( aliases 與 forward )?
  7. 什麼是 Procmail 與什麼是 ORDB 呢?

鸟哥郵件伺服器運作原理

如果你对这些概念不了解的话,请先移步郵件伺服器運作原理

安装 Postfix

CentOS6.x 已经默认安装了 Postfix,如果之前装了 Sendmail, 请先卸载 Sendmail 后再安装 Postfix。

1
2
yum remove sendmail
yum install postfix

修改默认 MTA

CentOS6.x 已经默认设置 MTA 为 Postfix,可通过

1
alternatives --display mta

来查看,如果显示结果不是 Postfix,可用以下命令修改

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

配置 Postfix

打开配置文件

1
vi /etc/postfix/main.cf

修改为如下

1
2
3
4
5
6
7
8
9
myhostname = mail.example.com
mydomain = example.com
myorigin = $myhostname //开启此项则发出的邮件地址后缀为@mail.example.com
myorigin = $mydomain //开启此项则发出的邮件地址后缀为@example.com
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination
home_mailbox = Maildir/

启动 Postfix

1
2
3
4
service postfix start
service postfix status
master(pid 13790) is running...

当然,我们可以设置它在开机时自动启动

1
chkconfig postfix on

至此,我们就已经能用Postfix发送邮件了。

测试

1
echo "This is the body of the email" | mail -s "This is the subject line" user@example.com

将上面的 user@example.com 改成你自己的收件箱地址进行测试,如果没有在收件箱看到邮件,请查看下是否被归到垃圾邮件了(因为我们目前还没在DNS解析上对邮件验证做相应设置,很容易被判定为垃圾邮件)。如果垃圾邮件里也找不到的话,那可能是发送失败了。可以通过查看 Postfix 的发送队列来排查问题

1
postqueue -p

这条命令将显示正在发送或曾发送失败将再次尝试的邮件,发送成功的邮件将从该队列中删除


参考
LNMP笔记:Centos下安装Postfix,替换sendmail发送邮件
Postfix 教学文档
How To Install and Configure Postfix as a Send-Only SMTP Server on Ubuntu 14.04
Linux下使用mail命令发送邮件
Postfix邮件队列查看方法