CentOS 7 上安装配置 postfix

最近被 Google 弄得贼闹心,加上邮件转发的需要,所以尝试用开源软件在 CentOS 7 上搭建了邮件服务。之前买过 exchange server,也用过 zimbra 都太臃肿,这次用 postfix 来搭建。

注意 这只是一个学习,非常不建议个人搭建邮局服务器,时间成本,维护成本等等非常不划算,邮局系统是非常复杂的。

准备条件

概念

便于理解,这里我画了一张图

postfix

发件人通过 MUA (邮件用户代理,即我们常用的邮件客户端) 操作,让 MTA (邮件传输代理,即 postfix) 将邮件传输到 MDA (邮件投递代理,保存在某一个地方,比如数据库中),而收件人通过 MUA 访问 MDA 投递的位置收取邮件。

基本是这么一个原理,但实际产品要比这个复杂得多。

操作步骤

默认的情况下, CentOS 自带了 postfix,只需要进行配置,打开 postfix 的配置文件

vi /etc/postfix/main.cf

按照下面的内容进行配置

第 75 行(vi/vim 命令 :75)

myhostname = mail.tourcoder.com

第 83 行

mydomain = tourcoder.com

第 99 行

myorigin = $mydomain

第 116 行

inet_interfaces = all

第 119 行

inet_protocols = ipv4

取消第 165 行的注释,注释掉 164 行

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

第 264 行,这里的 123.123.123.123 表示当前服务器的 IP 地址,是为了授权其他网络通过本服务器发送邮件。

mynetworks = 127.0.0.0/8 123.123.123.123

第 419 行

home_mailbox = Maildir/

第 425 行

mail_spool_directory = /var/mail

main.cf 文件的配置就结束了,打开 /etc/postfix/master.cf 文件将 smtps 的注释取消

smtps inet  n -  y  -  - smtpd

最后重启 postfix

service postfix restart

这时 postfix 基本就配置完成了。

测试

为了方便,就直接在同台机器上进行测试,用 telnet,操作步骤如下

这时候会得到 250 2.0.0 Ok:queued as ADFSDAFLJ,这样的内容,表示邮件已经进入发送队列。此时你可以用命令 quit 退出关闭 telnet。

配置 STMP 用户

也可以通过 cyrus 来配置 STMP 用户,一般在 centOS 会自动安装,也可以通过 rpm -qa | grep cyrus 来检查是否已经安装

先更改 /etc/postfix/main.cf 文件

vi /etc/postfix/main.cf

在底部增加

smtpd_client_restrictions = permit_sasl_authenticated
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous

然后重启 postfix,接着增加用户

saslpasswd2 -c -u tourcoder.com noreply

这里的 noreply 是用户名,回车会要求给该用户增加密码。完成后可以通过 sasldblistusers2 命令查看是否成功。最后配置 /etc/sasl2/smtpd.conf 文件

vi /etc/sasl2/smtpd.conf

将里面的内容替换成

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login CRAM-MD5 DIGEST-MD5

同样重启后完成即可。

问题

有时候有些服务商会屏蔽 25 这个端口,比如我当前服务器使用的服务商就屏蔽了,可以通过其他的端口来发送邮件,比如 250,操作

状态码

一些命令

MAIL QUEUES

更多说明看 https://postfix.org

© 2008 - 2021 · TOURCODER.COM ·