简单邮件服务(Postfix+dovecot)

时间:2022-09-24 12:57:10

电子邮件基本概念:

MUA(Mail User Agent)接收邮件所使用的邮件客户端,使用IMAP或POP3协议与服务器通信;
MTA(Mail Transfer Agent) 通过SMTP协议发送、转发邮件;
MDA(Mail Deliver Agent)将MTA接收到的邮件保存到磁盘或指定地方,通常会进行垃圾邮件及病毒扫描;将接收下来的邮件存放到对应用户邮筒当中的程序。通过分析MTA所收到邮件的表头或内容,来判断此邮件是属于哪个用户,然后决定将此邮件投递给哪个用户的邮筒里
MRA(Mail Receive Agent)负责实现IMAP与POP3协议,与MUA进行交互;通过MRA服务器提供的邮政服务协议(POP)来接收自己的邮件(zhud)
SMTP(Simple Mail Transfer Protocol)传输发送邮件所使用的标准协议;
IMAP(Internet Message Access Protocol)接收邮件使用的标准协议之一;
POP3(Post Office Protocol 3) 接收邮件使用的标准协议之一。
SPF(Sender Policy Framework)发信者策略架构,SPF是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录,它用于登记某个域名拥有的用来外发邮件的所有IP地址。
按照SPF的格式在DNS记录中增加一条TXT类型的记录,将提高该域名的信誉度,同时可以防止垃圾邮件伪造该域的发件人发送垃圾邮件。SPF是跟DNS相关的一项技术,它的内容写在DNS的txt类型的记录里面。mx记录的作用是给寄信者指明某个域名的邮件服务器有哪些。SPF的作用跟mx相反,它向收信者表明,哪些邮件服务器是经过某个域名认可会发送邮件的。

邮件服务器基本都有MTA,MDA,MRA 组成。
MRA与MUA交互,将server上的邮件通过IMAP、POP3协议送给client端(加密用IMAPS、POP3s)

常用的MUA有:outlook、thunderbird、Mac Mail、mutt;
常用的MTA服务有:sendmail、postfix;
常用的MDA有:procmail、dropmail;
常用的MRA有:dovecot、Cyrus-IMAP。

邮件收发过程:

    开始,用邮件用户代理(MUA)创建了一封电子邮件,邮件创建后被送到了该用户的邮件传输代理(MTA)——传送过程使用的是SMTP协议。然后MTA检查该邮件的收信人,向DNS服务器查询接收方MTA对应的域名,然后将邮件发送至接收方MTA——使用的仍然是SMTP协议。这时,邮件已经从远程的用户工作站发送到了他的ISP的邮件服务器,并且转发到了您的域中。
    然而,邮件在传输过程中很有可能被转移到另外一个MTA,但最终会有某个MTA接管这封邮件,并且负责投递。这时,MTA会将邮件传递给某个邮件投递代理(MDA),MDA的主要作用就是将邮件保存到本地磁盘,有些MDA也可以完成其他功能,比如邮件过滤或将邮件直接投递到子文件夹。需要注意的是,完成将邮件存放在服务器上这个功能的是MDA。
    最后,查收邮件。运行MUA,您可以使用IMAP协议或POP3协议来向邮件服务器查询您的邮件。邮件服务器会先确认您的身份,然后从邮件存储区检索邮件列表,并将列表返回给MUA。现在您就可以阅读邮件了。

Postfix(以下配置在内网范围访问)

Postfix之所以流行是因为其性能和安全性。它支持邮件过滤,称之为milter。milter的功能是允许邮件先经过防病毒和防垃圾邮件的软件扫描,然后再发送到Postfix。经过标准的配置,Postfix能够在较少的系统资源下运行。与其它MTA一样,Postfix有一个主要的配置文件(main.cf)。Postfix的每种配置都是基于表来驱动的,它可以转换成任何关系型数据库或文本文件。它还使用了Perl兼容的正则表达式库。与其它MTA相比,安装Postfix相对复杂一些。它支持虚拟邮箱和虚拟域。postfix在性能上大约比sendmail*倍。

安装

#yum install -y postfix

查看sendmial

#rpm -qa | grep sendmail(在rhel6.4里没有)
#rpm -qa | grep sendmail | xargs rpm -e(若存在,删除)

修改MTA(默认邮件传输代理)

#alternatives –config mta

更改配置主配置文件

#vim /etc/postfix/main.cf

myhostname = test.example.com  #主机名 
mydomain = example.com         #域名
myorigin = $mydomain           #送件来源主机名 
inet_interfaces = all   #监听所有地址来的服务,不只是127.0.0.1 
inet_protocols = all    #支持IPv6 
mydestination = $myhostname, localhost.$mydomain, localhost #MDA的目的地,能够收信的主机地址。与mail to相对。如果DNS中配了MX,则要把MX内容填在这。 
mynetworks = 127.0.0.0/8, 192.168.173.0/24
#受信的network。只有来自这些网络的邮件才帮忙Relay,从来源IP的角度过滤 
relay_domains = $mydestination #MTA的目的地,通常为下游Mail地址。从来源域名的角度过滤 
mail_spool_directory /var/spool/mail/

重启服务

#service postfix restart
#chkconfig postfix on

如果需要邮件转发(发给user1的都发给user2)

#vim /etc/aliases

#加入一行
user1:  user2

#postalias /etc/aliases

dovecot

Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持 Linux/Unix 系统。
POP / IMAP 是 MUA 从邮件服务器中读取邮件时使用的协议。其中,与 POP3 是从邮件服务器中下载邮件存起来,IMAP4 则是将邮件留在服务器端直接对邮件进行管理、操作。

安装

#yum install -y dovecot

更改配置

#vim /etc/dovecot/dovecot.conf

# 去掉下面一行前面的注释
# protocols =imap pop3 lmtp

重启服务

#service dovecot restart
#chkconfig dovecot on

测试

#echo “this is a test” | mail -s “to user2 not user1” user1@test.example.com
#cat /var/spool/mail/user1
#cat /var/spool/mail/user2