一、设置域名
如果先把域名设置好,则postfix会自动根据当前设定的域名作为配置,后面会省事很多。当然,也可以不用设置域名,而使用系统默认的localhost.localdomain域名。这里假设我们设定的域名为mail.abc.com
echo 'mail.abc.com' > /etc/hostname
hostname -F /etc/hostname
注意,这种方法只是临时设置,重启系统后会被还原。可以使用后面介绍的setup指令进行永久设置。
二、搭建DNS环境域名解析,用于解析postfix地址
yum install -y bind
yum install -y bind-utils
vim /etc/named.conf
修改/etc/named.conf下面两行内容:
listen-on port 53 { 127.0.0.1;192.168.8.8; }; //添加自己本的IP到列表中
allow-query { any; }; // 把这个值设置为any
修改子配置文件
vim /etc/named.rfc1912.zones
在文件末尾添加两行如下内容(需要注意,type与file前面的一定是tab制表符,不能是空格):
zone "abc.com" IN {
type master;
file "abc.com.zone";
};
zone "8.168.192.in-addr.arpa" {
type master;
file "abc.com.local";
};
其中第一个为正向解析区域,第二个为反向解析区域。
cd /var/named
cp -p named.localhost abc.com.zone
cp -p named.localhost abc.com.local
vim abc.com.zone
vim abc.com.local
编辑正向区域配置文件abc.com.zone,内容如下(IP配置根据情况填写):
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
A 192.168.8.8
MX 10 mail.abc.com
mail A 192.168.8.8
编辑反向区域配置文件abc.com.local,内容如下(IP配置根据情况填写):
$TTL 1D
@ IN SOA abc.com rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
A 192.168.8.8
MX 10 mail.abc.com
181 PTR mail.abc.com
添加DNS解析配置:
vim /etc/resolv.conf
添加内容:
nameserver 192.168.8.8
注意:这种方法只是临时添加的,DNS在重启网络服务后会被NetworkManager重新生成,如果想要永久添加DNS解析,可以修改/etc/sysconfig/network-scripts/ifcfg-eth0文件,在其后添加:
DNS1=192.168.8.8
或者使用setup命令在网络配置中选择DNS配置进行添加或者修改:
这里可以直接修改主机名、DNS以及DNS搜寻路径,把主机名设置为mail.abc.com,主DNS设置为本机IP,第二DNS设置为网关IP。
配置好后重启named服务,并进行测试:
service named restart
nslookup mail.abc.com
如果nslookup mail.abc.com后出现:
Server: 192.168.8.8
Address: 192.168.8.8#53
Name: mail.abc.com
Address: 192.168.8.8
则表示成功。
三、安装postfix服务器并进行配置
可能postfix在系统安装过程中已经安装了此服务,可以使用下面的命令查询
rpm -q postfix
如果没有可以手动安装:
yum install -y postfix
使用命令:
postconf -a
查询是否支持cyrus与dovecot,如果不支持需要重新安装新的版本。笔者使用的Centos 6.10,系统中安装的是postfix-2.6.6-8.el6.x86_64,是支持cyrus与dovecot。
编辑postfix的配置文件:
vim /etc/postfix/main.cf
如果在安装postfix之前设置好了hostname就可以不用修改hostname,否则需要修改下面两项:
myhostname = mail.abc.com
mydomail = abc.com
还需要修改以下内容:
inet_interfaces = 192.168.8.8, 127.0.0.1, localhost #监听接口
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/ #邮件目录,在用户目录下
home_mailbox有两个选项,一个是Mailbox,另一个就是Maildir。
- Mailbox
同一个用户的所有邮件内容存储为单个文件,通常保存在/var/spool/mail/目录下文件名与用户名相同,这是Postfix默认使用的方式。 - Maildir
使用目录结构来存储用户的邮件内容每一个用户使用一个文件夹,每封邮件都作为一个独立的文件存放。这种方式的存取速度和效率要好一些,对于管理邮件内容页也更加方便。
配置完成后可以使用下面的命令进行语法检测:
postfix check
如果想要查看postfix非默认配置,可以使用命令:
postconf -n
如果没有错误则可以启动postfix服务了:
service postfix start
四、安装配置dovecot
yum install -y dovecot
编辑/etc/dovecot/dovecot.conf文件,打开:
protocols = imap pop3 lmtp
listen = *, ::
编辑/etc/dovecot/conf.d/10-auth.conf文件,设置:
disable_plaintext_auth = no
编辑/etc/dovecot/conf.d/10-mail.conf文件,设置:
mail_location = maildir:~/Maildir
五、测试
在进行测试之前,我们需要添加一些测试账号:
groupadd mailusers
useradd -g mailusers -s /sbin/nologin jack
passwd jack
useradd -g mailusers -s /sbin/nologin tom
passwd tom
上面先添加了一个邮件组mailusers,然后添加了mailusers组的两个用户jack和tom,但这两个用户并不能登录系统。
为了保障测试顺利,建议先把防火墙关闭,同时把SELinux防火墙也关闭:
vim /etc/selinux/config
设置SELINUX为disabled:
SELINUX=disabled
然后重启系统:
reboot now
1.使用mail命令进行简单测试
echo "您好,这是邮件内容" | mail -s "hello" tom@abc.com
可以在用户目录的Maildir/new中查看到新邮件:
2.使用telnet进行测试
连接端口25发邮件:
telnet mail.abc.com 25
然后写邮件,依次输入下面红框中的命令或者字符即可。
Trying 192.168.8.8...
Connected to mail.abc.com.
Escape character is '^]'.
220 mail.abc.com ESMTP Postfix
helo mail.abc.com // 设置发邮件的主机
250 mail.abc.com // 250表明命令执行成功
mail from: jack@mail.abc.com // 设置发件人地址
250 2.1.0 Ok
rcpt to:tom@mail.abc.com // 设置收件人地址
250 2.1.5 Ok
data // 开始写邮件正文
354 End data with <CR><LF>.<CR><LF>
hello tom, I am Jack! 这是一封测试邮件!
. // 标点符号“.“结束正文书写
250 2.0.0 Ok: queued as 09F21E0973
quit // 退出telnet
221 2.0.0 Bye
Connection closed by foreign host.
连接端口110收邮件:
telnet mail.abc.com 110
依次输入红框中的命令,即可查看邮件:
user tom // 使用tom用户登录
pass tom // 输入tom的密码
list // 列出邮件列表,可以看到有一封邮件
retr 1 // 读取1号邮件
quit //退出telnet
从上面的示例可以看到,控制台方式使用中英文混合可能会有一些问题。
3.使用第三方邮件工具收发邮件
这里我们以Foxmail为例,Foxmail运行在Windows平台,我们的邮件服务器运行在Linux平台,为了方便测试,需要把两台电脑部署在同一局域网内。并且注意Linux的防火墙是否有打开相应的端口,为了方便测试可以直接关闭防火墙。
安装好Foxmail后,添加邮箱账号:
然后以同样的方式添加tom的账号。
然后我们以tom账号向jack账号发邮件
邮件发送成功后,就可以以jack的账号来收取邮件了,我们可以看到有一封新邮件:
如果在测试过程中有问题,可以查看邮件系统日志文件:
/var/log/maillog
目前配置的邮件系统,可以在内网进行邮件收发,也可以向外发送,比如网易,QQ,新浪等等(如果没有被对方视为垃圾邮件的话),但很快估计就会发不成功,会被退回,可以参考退回原因。
比如网易邮箱退回信息:
host 163mx03.mxmail.netease.com[220.181.14.158] said: 554
DT:SPM 163 mx41,W8CowACXax2qMa1e1h2ZJg--.2949S2 1588408748,please see
http://mail.163.com/help/help_spam_16.htm?ip=171.212.195.205&hostid=mx41&time=1588408748
(in reply to end of DATA command)
错误码:554 DT:SPM 可能被视为垃圾邮件了,参见http://mail.163.com/help/help_spam_16.htm?ip=171.212.195.205&hostid=mx41&time=1588408748
QQ邮箱退回信息:
host mx3.qq.com[58.251.110.111] said: 550 Domain may not
exist or DNS check failed
错误码:550 Domain may not exist or DNS check failed
即域名不存在或者DNS检查失败。有些邮箱会在收到邮件时,验证是否可以向该地址发送邮件,如果不能发送则会拒收,以防止垃圾邮件。
出现这些问题有一个重要原因是因为我们并未在公网注册我们的域名,所以对方无法反向查找。不过到目前为止内部使用是完全没有问题了。
转载:https://blog.csdn.net/witton/article/details/105882959