文档目的
熟悉邮件系统,了解邮件收发流程
基础知识
MUA(Mail User Agent 用户代理): 用于收发邮件。
MTA(Mail Transfer Agent邮件传输代理):将来自于MUA的邮件转发给指定用户。
MDA(Mail Delivery Agent邮件投递代理):将来自于MTA的邮件保存到本机的收件箱中。(事实上,这个 MDA 是挂在 MTA 底下的一个小程序, 最主要的功能就是:分析由 MTA 所到的信件表头或内容等数据, 来决定这封邮件的去向。)
Postfix:提供邮件发送服务,即SMTP。
Dovecot:提供邮件收取服务,即POP3。
OutLook Express:客户端收发邮件的工具。
常用命令
postqueue | 查看邮件队列信息 |
mailq | 查看邮件队列信息 |
alternatives --config mta | 修改默认邮件传输代理 |
alternatives --display mta | 查看默认邮件传输代理 |
service dovecot status | 查看服务状态 |
/usr/sbin/postconf -n | 检查postfix配置 |
所需软件
telnet 可以用来验证本地邮件服务是否安装成功 telnet 127.0.0.1 25
软件结构
/etc/postfix/main.cf
这就是主要的 postfix 配置文件啰,几乎所有的设定参数都是在这个档案内规
范的! 这个档案预设就是一个完整的说明档了,你可以参考这个档案的内容就
设定好属于你的 postfix MTA 呢! 只要修改过这个档案,记得要重新启动
postfix 喔!
参数 | 作用 |
myhostname | 邮局系统的主机名。 |
mydomain | 邮局系统的域名。 |
myorigin | 从本机寄出邮件的域名名称。 |
inet_interfaces | 监听的网卡接口。 |
mydestination | 可接收邮件的主机名或域名。 |
mynetworks | 设置可转发那些主机的邮件。 |
relay_domains | 设置可转发那些网域的邮件 |
/etc/postfix/master.cf
主要规定了 postfix 每个程序的运作参数,也是很重要的一个配置文件。不过
这个档案预设已经很 OK 了,通常不需要更改他。
/etc/postfix/access (利用 postmap 处理)
可以设定开放 Relay 或拒绝联机的来源或目标地址等信息的外部配置文件,不
过这个档案要生效还需要在 /etc/postfix/main.cf 启动这个档案的用途才行。
且设定完毕后需要以 postmap 来处理成为数据库档案呢!
/etc/aliases (利用 postalias 或 newaliases 均可)
做为邮件别名的用途,也可以作为邮件群组的设定喔!
至于常见的执行档则有底下这些:
/usr/sbin/postconf (查阅 postfix 的设定数据)
这个指令可以列出目前你的 postfix 的详细设定数据,包括系统默认值也会被
列出来, 所以数据量相当的庞大!如果你在 main.cf 里面曾经修改过某些预设
参数的话,想要仅列出非默认值的设定数据, 则可以使用『postconf -n』这个
选项即可。
/usr/sbin/postfix (主要的 daemon 指令)
此为 postfix 的主要执行档,你可以简单的使用他来启动或重新读取配置文件:
[root@www ~]# postfix check <==检查 postfix 相关的档案、权限等是否正确!
[root@www ~]# postfix start <==开始 postfix 的执行
[root@www ~]# postfix stop <==关闭 postfix
[root@www ~]# postfix flush <==强制将目前正在邮件队列的邮件寄出!
[root@www ~]# postfix reload <==重新读入配置文件,也就是
/etc/postfix/main.cf
要注意的是,每次更动过 main.cf 后,务必重新启动 postfix,可简单的使用
『postfix reload』即可。不过老实说,鸟哥还是习惯使用 /etc/init.d/postfix
reload..
/usr/sbin/postalias
设定别名数据库的指令,因为 MTA 读取数据库格式的档案效能较佳,所以我们
都会将 ASCII 格式的档案重建为数据库。 在 postfix 当中,这个指令主要在
转换 /etc/aliases 成为 /etc/aliases.db 啰!用法为:
[root@www ~]# postalias hash:/etc/aliases
# hash 为一种数据库的格式,然后那个 /etc/aliases.db 就会自动被更新
啰!
/usr/sbin/postcat
主要用在检查放在 queue (队列) 当中的信件内容。由于队列当中的信件内容是
给 MTA 看的, 所以格式并不是一般我们人类看的懂的文字数据。所以这个时候
你得要用 postcat 才可以看出该信件的内容。 在 /var/spool/postfix 内有相
当多的目录,假设内有一个文件名为 /deferred/abcfile , 那你可以利用底下
的方式来查询该档案的内容喔:
[root@www ~]# postcat /var/spool/postfix/deferred/abcfile
/usr/sbin/postmap
这个指令的用法与 postalias 类似,不过他主要在转换 access 这个档案的数
据库啦!用法为:
net.qiang@hotmail.com
[root@www ~]# postmap hash:/etc/postfix/access
/usr/sbin/postqueue
类似 mailq 的输出结果,例如你可以输入『postqueue -p』看看就知道了!
/var/log/maillog
记录邮件传递过程的日志。
系统环境
操作步骤
1.设置DNS MX记录
由于邮件系统需要DNS的支持(现在已经没有人用IP来寄信,email都是使用【账号@主机名】的方式来处理,所以邮件服务器一定要有个合法注册过的主机名),需要在DNS上配置MX和A标识,来指出邮件服务器的具体位置
在配置邮件服务之前,需要先在DNS服务器中添加A记录和MX记录,具体方法
a)Linux中添加以下节点
b) Windows中在DNS管理器中“正向查找区域”的相应域中右键“新建主机(A或AAAA)”新建一个邮件服务器的A记录,然后再邮件点击“新建邮件交换器(MX)(M)”,注意“主机或子域”不填,接着把邮件主机选择浏览到刚刚新建的mail主机(优先级的话只有一台可以随便设置,如果有多台,数值小的优先)。
然后再修改邮件服务器本地主机名的配置文件
vim /etc/hostname
输入主机名
mail.zoenet.com
2.配置Postfix服务程序
先停止防火墙
systemctl stop firewalld
安装postfix程序(一般系统中都默认已经安装)
a)配置main.cf 文件
//修改第76行的邮件服务器主机名
myhostname = mail.zoenet.com
//修改第83行邮件服务器域名
mydomain = zoenet.com
//修改第99行寄出邮件域名,$mydomain的值已经在上面有定义
myorigin = $mydomain
//修改第116行的监听网卡
inet_interfaces = all
//修改第164行的可接收邮件的主机名和域名
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
b)创建邮箱账号
这里的邮箱账号是用到系统pam文件,故创建的方式和创建系统账号的方式是一样的
useradd zoe
echo “redhat” | passwd --stdin zoe
c)启动Postfix服务程序
systemctl restart postfix
systemctl enable postfix
systemctl status postfix
3.配置dovecot服务
a)安装dovecot程序
yum install dovecot -y
b)修改dovecat.conf
vim /etc/dovecot/dovecot.conf
//修改第24行的支持邮件协议
24 protocols = imap pop3 lmtp
//然后追加允许明文认证(25行)
disable_plaintext_auth = no
//修改第48行的允许登陆网段地址,全部允许即为(0.0.0.0/0)
login_trusted_networks = 0.0.0.0/0
c)配置邮件的格式与存储路径
vim /etc/dovecot/conf.d/10-mail.conf
//修改第25行,将#去掉
mail_location = mbox:~/mail:INBOX=/var/mail/%u
d)创建邮件存储目录
su zoe
mkdir -p mail/.imap/INBOX
e)启动dovecot服务
systemctl restart dovecot
systemctl enable dovecot
4.使用outlook登陆
修改outlook所在电脑的DNS
注:第一次搜索outlook使用加密登入模式,所以无法登陆,会显示登入失败,点击下一步,使用非加密登入即可
没成功。。。。
5.测试邮件服务器
安装telnet
yum install telnet
登入SMTP端口
telnet 127.0.0.1 25
填写发件人
MAIL FROM:<test@zoenet.com>
敲回车
填写收件人
RCPT TO:<hahaha@zoenet.com>
开始写邮件内容
DATA
输入标题
Subject: test message
输入内容,并以 . 结束
this is my first mail
.
常见问题
问题一:outlook无法登入用户,dovecot启动报错“ Address family not supported by protocol”
解决方法:
原因是因为系统不存在ipv6
vim /etc/dovecot/dovecot.conf
把listen = * [::]改为listen = *
问题二:可以发邮件,但是outlook和mail均无法收到邮件,邮件服务器中/home/username/Maildir/new中可以看到邮件
解决方法:
/etc/postfix/main.cf 中425行mail_spool_directory = /var/mail 前#去掉
确保/etc/dovecot/conf.d/10-mail.conf 中第24行到第26行的路径和收件箱的路径一样。一般outlook收不到邮件都是这里的配置问题。
参考文献
http://www.cnblogs.com/dudu/archive/2012/12/12/linux-postfix-mailserver.html
转载于:https://blog.51cto.com/11601346/1869925