1. 安装并,查看Postfix运行状况
Postfix在CentOS中是默认配置好了的,你只需要通过service postfix status
来查看Postfix的运行情况。但是在ubuntu16中并没有默认安装,所以要使用apt-get install -y postfix
进行安装。
CentOS中Postfix的安装和运行:
ubuntu16中Postfix的安装和运行:
这里可以看出都已经安装并运行起来,没有任何问题。
2. Postfix配置
Postfix的配置文件安装完成后会自动保存在/etc/postfix/文件夹中,这里ubuntu和CentOS都是同样的位置(以下如果不特殊指出ubuntu和CentOS都是一样):
这里最主要的配置文件是man.cf,但是并不建议通过修改这个文件本身去修改Postfix配置,而是通过postconf命令进行修改:
-
postconf -d
(default)显示默认Postfix配置,一般配合 grep 查询目标配置。 -
postconf -n
(now)显示当前Postfix配置,一般也是配合grep 查询目标配置
-
postconf -e "key = value"
(这里的""不能省略)则是修改当前的配置。这种修改方式的好处是,如果你输入了配置文件不匹配的规则,用postconf -d或者-n是会提示你不能用的参数,必须要去main.cf配置文件去删掉:
我们还可以通过netstat -tupln | grep master
命令去查看当前Postfix的监听端口(这里的-tupln是指列出所有TCP和UDP正在Listen的端口,p 显示建立相关链接的程序名,-n 选项禁用域名解析功能):
这里已经将监听端口改成了ALL,是因为我们需要的不只是默认值当中监听本机的25端口,而是需要监听来自其他网络的25端口,这样才可以互相通信。
下面我们需要更改下Postfix配置文件中的myhostname和mydomain两个选项,因为所发邮件“@”符号后所跟的就是你的主机名,也就是myhostname,一般默认myhostname就是本机的hostname,但是如果你更改了myhostname,而本机的hostname没有更改,就要写你myhostname,如下:
从这里看出myhostname=mail.jovi.net,而hostname为Centos-V。到此即便将本机的BIND(DNS)服务关掉也是可以在本机内的用户互相通信发送email的,因为此时只是通过Postfix服务进行本机解析,主要是通过:
mydestiantion 来进行接收发送邮件,这个的意思是只要我们发送的邮件是给我们本机所在用户,也就是
/var/spool/mail
目录下的用户都是可以互相发送邮件,而从上上一张图可以看出
mydestination = $myhostname,localhost.$mydomain,localhost
。意思是在本机发送邮件给alice,david,jovi等等这些用户,并且@符号后跟mail.jovi.net($myhostname),或者localhost.jovi.net($mydomain = jovi.net)或者,localhost。都是可以发送通过并且成功接收的。
这里的postfix配置需要注意的一点就是每一次以postconf -e修改配置后都是需要重启postfix服务来让新配置生效的
3. 本地发送邮件验证Postfix正常运行
从上面3 个图都可以看出 通过用户名@mydestionation
的方式都是可以成功发送并接受邮件的,这里发送邮件的命令是:mail -vs "subject" username@mydestionation
-vs的意思是详细显示信息和输入主题,输入此命令后,敲回车,然后就可以输入正文了,最后以Ctrl+d结束写邮件并发送。
如果想要删除某用户下的所有邮件,只需要将其/var/spool/mail
目录下的文件清空就可以了,可以使用echo "" > /var/spool/mail/jovi
命令
4 .配置BIND服务
以上都是在本地如何验证Postfix服务运行正常并进行本机用户的邮件互通。现在如果我们想要本机和其他机器进行通信就必须使用DNS,这是Postfix非本机互通的前提:
上面是将named-chroot服务打开,以及修改本地域名服务器配置文件,修改为本机(DNS服务器)IP,CentOS和ubuntu都是需要修改的,这里是将CentOS作为DNS服务器。
然后修改
/var/named/chroot/etc/named.conf
文件,添加以下两个域名,方便后面进行解析然后配置这2个zone文件:
因为是CentOS作为DNS服务器,所以在用ubuntu试着连接CentOS的时候,先要将CentOS防火墙以及Selinux设置为可连接:
上面设置以后就可以用ubuntu连接CentOS了
这样就可以看到无论是在CentOS还是ubuntu上都是可以解析到我们所需要发送的两个主机名,这里也要检查下ubuntu上的Postfix中的myhostname是否是我们所指定的主机名。
还有就是要将之前说过的监听服务设置成所有:
5. 互通邮件
CentOS ====>>> ubuntu
ubuntu====>>> CentOS
如果其中有什么问题,最先考虑的是配置更改后是否有重启服务让配置生效!!