共计 4439 个字符,预计需要花费 12 分钟才能阅读完成。
文档目的
熟悉邮件系统,了解邮件收发流程
基础知识
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 均可)
做为邮件别名的用途,也可以作为邮件群组的设定喔!
至于常见的执行档则有底下这些:
net.qiang@hotmail.com
/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中添加以下节点
@ IN MX 10 mail.zoenet.com.
mail IN A 172.16.3461
b)Windows中 在DNS管理器中“正向查找区域”的相应域中右键“新建主机(A或 AAAA)”新建一个邮件服务器的A 记录,然后再邮件点击“新建邮件交换器(MX)(M)”,注意“主机或子域”不填,接着把邮件主机选择浏览到刚刚新建的 mail 主机(优先级的话只有一台可以随便设置,如果有多台,数值小的优先)。
然后再修改邮件服务器本地 主机名 的配置文件
vim /etc/hostname
输入主机名
mail.zoenet.com
2.配置Postfix 服务程序
先停止防火墙
systemctl stop firewalld
安装 postfix 程序 ( 一般系统中都默认已经安装)
yum install postfix -y
a)配置 main.cf 文件
vim /etc/postfix/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.linuxidc.com/Linux/2017-03/141443.htm