浅析邮件服务器原理

上面的架构图中包含两组邮件系统、两个客户端和一个DNS服务器,其中的邮件系统是企业中比较经典的架构形式,下面我将依据此图来简述邮件服务器的工作流程。

名词解释:

  • MUA 接收邮件所使用的邮件客户端,使用IMAP或POP3协议与服务器通信,常见的有:outlook、foxmail;
  • MTA 通过SMTP协议发送、转发邮件,常见的有:sendmail、postfix、qmail;
  • MDA 将MTA接收到的邮件保存到磁盘或指定地方,通常会进行垃圾邮件及病毒扫描;
  • MRA 负责实现IMAP与POP3协议,与MUA进行交互;
  • SMTP 传输发送邮件所使用的标准协议;
  • IMAP 接收邮件使用的标准协议之一;
  • POP3 接收邮件使用的标准协议之一;
  • MailBox 用户邮箱;
  • cyrus-SASL及courier-authlib 提供用户认证相关的支持。
  • SQL 数据库,用于存储用户身份信息

前面的架构图中,MUA想发送邮件,就要将邮件通过SMTP协议送到MTA上,MTA通常会要求用户认证身份(也可不认证),认证通常使用SASL,认证源可以是像上面的架构图中那样使用SQL数据库也可以使用其他方式。MTA收到邮件后会检查邮件目的地址的邮件域,此时会产生两种情况。
情况一,目的邮件域是本服务器:
如果发现是本服务器的邮件域则将邮件送到MDA,由MDA将其投递到用户的邮箱(MailBox)中。最后用户在MUA上使用POP3/IMAP协议链接MRA,MRA通常也会要求用户认证身份,其认证源同MTA一样可以是SQL也可以是其他方式,若认证通过,则允许MUA读取邮件信息。
情况二,目的邮件域非本服务器:
若是邮件域是其他邮件服务器的,则MTA会发送UDP报文向DNS服务器查询邮件域对应的邮件主机,并最终解析出其IP地址,随后MTA会查询本服务器的转发控制策略,若允许转发,则将邮件转发到该域对应的服务器上,最终会重复情况一中MTA收到邮件后的处理方式。

CentOS 6下邮件接收代理程序——dovecot配置教程

介绍:
dovecot是开源的pop3和imap邮件服务器(MRA,邮件接收代理),用于支持客户端从服务器读取邮件。
软件安装:

[root@localhost ~]# yum install -y dovecot

dovecot配置部分
使用vim文本编辑器编辑dovecot主配置文件

[root@localhost ~]# vim /etc/dovecot/dovecot.conf

找到# protocols = imap pop3 lmtp这条配置语句,去掉前面的注释(#)。这里是开启dovecot的pop3和imap服务。

修改后如图:

保存并退出。
编辑/etc/dovecot/conf.d/10-auth.conf

[root@localhost ~]# vim /etc/dovecot/conf.d/10-auth.conf

找到# disable_plaintext_auth = yes,去掉前面的注释(#)并将= yes改为= no。这里是定义允许使用明文密码登陆imap/pop3。

修改后如图:

保存并退出
编辑/etc/dovecot/conf.d/10-mail.conf

[root@localhost ~]# vim /etc/dovecot/conf.d/10-mail.conf

找到# mail_location = mbox:~/mail:INBOX=/var/mail/%u,去掉前面的注释(#)。这里是定义邮件存储路径。

修改后如图:

保存并退出,至此dovevot部分配置完成。
现在在保证selinux及防火墙已关闭的情况下启动dovecot服务。

[root@localhost ~]# service dovecot start

添加两个邮件账户测试用:

[root@localhost ~]# useradd -s /sbin/nologin user1
[root@localhost ~]# useradd -s /sbin/nologin user2
[root@localhost ~]# passwd user1
[root@localhost ~]# passwd user2

创建完账户后要赋予账号对应的邮箱777的权限,否则接收不到邮件。

[root@localhost ~]# chmod 777 /var/mail/*

测试服务可以使用outlook、fixmail等邮件客户端。
推荐配置完MTA(邮件传输代理)和MRA(邮件接收代理)后一起测试,会方便很多。
关于MTA(邮件传输代理)的配置教程可以参考以下文章:

CentOS 6下使用sendmail搭建简单邮件传输服务器