A、邮件使用的协议

1. SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
使用端口(port)25。

2. POP3(Post Office Protocol 3)即邮局协议(Post Office Protocol)的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,由RFC1939定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。
使用端口(port)110。

3. IMAP(Internet Mail Access Protocol)即交互式邮件存取协议,IMAP是斯坦福大学在1986年开发的研发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。当前的权威定义是RFC3501。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。
使用端口(port)143。

4. SASL(Simple Authentication and Security Layer)即简单认证安全层,是一种用来扩充C/S模式验证能力的机制。在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。

5. MIME(Multipurpose Internet Mail Extensions)多功能Internet 邮件扩充服务,它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。服务器会将它们发送的多媒体数据的类型告诉浏览器,而通知手段就是说明该多媒体数据的MIME类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些是Shockwave文件等等。服务器将MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件。

B、术语

1. MUA(Mail User Agent):邮件用户代理。是电子邮件系统的构成之一,接受用户输入的各种指令,将用户的邮件发送至MTA或者通过POP3、IMAP协议将邮件从MTA取到本机。常见的MUA有Foxmail,Outlook Express等邮件客户端程序。因为我们的计算机都无法直接寄信的,所以需要透过MUA来帮我们传达信件,不论是送信还是收信,客户端的用户都需要透过各个操作系统提供的MUA才能够使用邮件系统。MUA主要的功能就是收受邮件主机的电子邮件,以及提供用户浏览与编写邮件的功能!

2. MTA(Mail Transfer Agent):邮件传输代理。用于收发Mail的程序一般统称为邮件用户代理MUA。将来自MUA的信件转发给指定的用户的程序一般被称之为因特网邮件传送代理MTA。在linux/Unix系统上,最著名的MTA有sendamil、qmail等程序。

3. MDA(Mail Delivery Agent):邮件传输代理。从MTA取得邮件并传送至邮件接受者的邮箱。常见的MDA通常和MUA合二为一。主要的功能就是将MTA所收受的信件,依照信件的流向(送到哪里去)来将该信件放置到本机账户下的邮件档案中(Mailbox)或者是再经由MTA将这个信件送到下个MTA去!而如果信件的流向是到本机当中时,这个邮件代理人的功能可不止是将由MTA传来的邮件放置到每个使用者的Mailbox而已,他还可以具有邮件分析(filtering)与其他相关的功能。

C、服务、软件

1. Sendmail:是最重要的邮件传输代理程序。一个邮件传输代理的主要工作是监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接收到的邮件缓冲或者提交给最终投递程序。

2. postfix:是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。postfix是sendmail兼容的,从而使sendmail用户可以很方便地迁移到postfix。

3. Dovecot:是Linux/UNIX类系统平台上的开源IMAP和POP3服务器。Dovecot是一个比较新的软件,由Timo Sirainen开发,最初发布于2002年7月。作者将安全性考虑在第一,所以Dovecot在安全性方面比较出众。另外,Dovecot支持多种认证方式,所以在功能方面也比较符合一般的应用。

4. cyrus-imap:又一个开源的POP3/IMAP服务器。

5. cyrus-sasl:是起到SMTP认证功能的软件包。SASL (Simple Authentication Security Layer)简单认证安全层,功能主要是用于SMTP认证。而Cyrus SASL是SASL 的一个实现。

6. clamav:Clam AntiVirus是一款UNIX下开源的(GPL)反病毒工具包,专为邮件网关上的电子邮件扫描而设计。该工具包提供了包含灵活且可伸缩的监控程序、命令行扫描程序以及用于自动更新数据库的高级工具在内的大量实用程序。该工具包的核心在于可用于各类场合的反病毒引擎共享库。

7. SpamAssassin:是一种安装在邮件伺服主机上的邮件过滤器,用来辨识垃圾信。它是使用大量的预设规则检查垃圾信,这些规则会检查寄到网域内所有邮件的标头,内文,以及送信者。他采取的过滤方式是采用记分制,也就是说会根据我们所设定的标准来给予分数超过标准值的时候即判定为SPAM(垃圾邮件)。

8. MailScanner:是一个电子邮件安全系统,并遵循著GPL的精神,为开放原始码的软体。MailScanner系统透过把原有的sendmail递送程序停止,只启动mta子程序,   将所收到的邮件档案先暂存在另外一个文件夹(mqueue.in)。等到ClamAV及SpamAssassin进行完成病毒及广告信件检查后,MailScanner进行邮件后续加工动作(如将邮件主旨增加{spam}或{virus}样式,或删除)。最后将处理过的邮件档案放回至原先sendmail的邮件递送文件夹,把递送功能交还给sendmail,回到最初sendmail程序处理程序完成邮件送收。

9. Procmail:用于邮件过滤,可以扫描邮件进行邮件分类,你还可以用它实现邮件的自动回复,对邮件进行进一步的处理等。

D、配置文件

1. /etc/mail/sendmail.cf:这是 sendmail 的主要配置文件,所有的参数都是他在管理的!此文件太过复杂不建议手动编辑,我们M4编辑配置文件,m4可以将简单的环境设定转化为sendmail.cf。该配置文件有时也会放在/etc/sendmail.cf目录下。

2. /usr/share/sendmail/cf/cf/xxxx.m4:因为sendmail.cf最好不要手动修改,所以需要使用到m4指令。 m4可以将简单的环境设定转化为sendmail.cf。源码安装时在/源码包/cf/cf目录中。

3. /etc/mail/local-host-names:主要用来处理一个主机同时有多个主机名称时候的收发信件主机名称问题。当你的主机有多个HOSTNAME的时,若你的主机名称为test1.your.domain和test2.your.domain,而且这两个hostname您都希望可以用在收email,那你就必需把他们名字都写入local-host-names中。没有写入的主机名称,邮件将无法正确送达。例如:www.vbird.adsldns.org、vbird.adsldns.org这两个主机名称的ip相同,也就是指向同一台机器上。若local-host-names中只有vbird.adsldns.org,那么寄给userid@vbird.adsldns.org都ok!但是寄给userid@www.vbird.adsldns.org就出错。

4. /etc/mail/access.db :这是谁可使用本邮件服务器的资料库,要转换成这个资料库需要makemap以及/etc/mail/access文件的配合!这个文件可以是Sendmail里面最重要的使用者权限管理资料。

5. /etc/mail/aliases.db:这是用来设置别名的文件!你可以用这个文件设定群组收信!要由aliases和newaliases来生成这个文件,该配置文件有时也会放在/etc/aliases.db目录下。

6. /etc/mail/statistics:记录Sendmail收发信的相关信息。

四、执行文件

1. /usr/sbin/sendmail:是sendmail的主要执行文件。他会读取sendmail.cf设定文件内容。在发送信件时,就是使用这个程序。启动后,打开端口(port)是25。

2. /usr/sbin/ipop3d:sendmail的功能是在处理寄信的问题,而ipop3d就是处理client的收信问题。如果你的Mail Server希望提供用户端使用Netscape或OutLook express来收信,那么就需要打开这个服务!注意:pop3是由imap套件所提供的,并没有包含在sendmail套件中。

3. /usr/sbin/makemap:主要将access转换为access.db资料库的制作执行文件。

4. /usr/sbin/mailstats:将/etc/mail/statistics读出来的程序,可以查看到目前为止Sendmail共传送、接收多少邮件。

5. /usr/bin/newaliases:将/etc/mail/aliases转换为/etc/mail/aliases.db的制作执行文件。

6. /usr/bin/mailq:用来观察/var/spool/mqueue这个邮件暂存目录的资料情況的指令。

7. /usr/bin/m4:将*.mc转换为*.cf的执行文件!需要搭配sendmail原始码,或sendmail-cf这个执行套件才行!注意:m4也需要额外安裝的一個套件,sendmail原本套件中并未包含m4。

五、邮件相关目录

1. /var/spool/mail:这个是邮件收受下来之后,每个用户信件放置的目录,一个账号会使用一个档案,例如你的账号为 test,就是 /var/spool/mail/test 这个档案。此外,你的POP3协议亦是使用这个目录中的mailbox做为默认的邮件取得的档案数据。

2. /var/spool/mqueue:当邮件由于对方主机的问题,或者是网络的问题,而无法送出去时,那么该封邮件将会暂时的存放在这个目录下,然后主机会每隔大约30~60分钟重新尝试传送一遍,通常设定在五天内该封信件还寄不出去,那就会退给原发信者了!

3. /var/spool/clientmqueue:这是新的sendmail 8.12版本才会出现的队列目录 (您如果想要以 tarball 安装sendmail的话,请务必参考本章底下的说明,这个目录的权限设定相当的重要喔!) 。

六、M4配置文件

    m4配置文件通常取名为filename.mc,你可以在/usr/share/sendmail/cf里面找到相当多的范例。例如Red Hat的设定范例文件为/usr/share/sendmail-cf/cf/redhat.mc。

    这个环境参数配置文件的设定项目很多,其格式为:设定组件(`设定项目', `参数一', `参数二') 。

仔细看到上面的例子当中,在设定的组件后面接上小括号,而小括号内则为该设定组件的项目内容,以及该项目内容的参数!而将设定项目与各参数包起来的“并不是单引号”,要注意的是,在“设定项目”左右两边的:

1.左边的是quod,也就是键盘上面数字键 1 的左边那个按键“`”;

2.右边的才是单引号“'”。

这里很容易被搞错!请特别注意,而每个设定项目与参数之间,则是以逗号“,”来做为分隔。

1. divert :是否要将说明数据(或者是批注数据)写入输出的档案中,如果在 filename.mc 档案当中具有批注符号时,(注意, *.mc 的批注符号可以是 # 也可以是 dnl 这个字符串!)而你输出资料时不想将这些说明资料也输出,那就可以使用 divert (-1) 。反之,如果你想将这些说明数据同时输出,那就使用 divert (0)。由于我们不想要手动修改 sendmail.cf ,所以输出的数据当然就不太需要注明啦!只要在环境配置文件 *.mc 里面说明清楚即可!因此,你应该会常常在档案当中看到 diver (-1) 才对。
范例为:divert (-1)。

2. OSTYPE:这个组件功能在设定使用的操作系统类别。Sendmail默认提供数种操作系统的模式,你可以在 /usr/share/sendmail-cf/ostype 这个目录当中找到所支持的操作系统模式。
因为我们是使用 Linux ,所以范例为:OSTYPE(`linux') 。

3. define:这个组件的作用比较多喔!他可以定义出许多有用的sendmail需要的参数,举个例子来说,如果我要将邮件别名配置文件放置在 /etc/aliases 底下,那么我可以使用底下的范例:define(`ALIAS_FILE', `/etc/aliases')。那个ALIASE_FILE就是主要的设定项目啦!而这个项目主要规定邮件者别名的档案所在地,所以,后面就直接接上完整的文件名!更多详细的 define 说明,可以参考您计算机中的 /usr/share/sendmail-cf/README 这个档案喔! 

4. undefine:恰恰与 define 相反啦! Sendmail 默认会支持定义很多的项目,而如果您不需要定义该项目,则可以使用 undefine 来将他移除掉喔!例如:undefine(`UUCP_RELAY') 。

5. FEATURE:这个组件 FEATURE 字面上的意思是特征、特色,那也就是说,这个组件里面会规定出sendmail所额外新增的一些任务啦!这些任务的支持必需要 sendmail 有提供才可以!你可以在/usr/share/sendmail-cf/feature 这个目录当中找到sendmail所提供的各个功能喔!举个例子来说,如果我们要规定 sendmail 访问权限设定的档案,也就是 /etc/mail/access.db 时,你可以这样写:FEATURE(`access_db',`hash -o /etc/mail/access.db')。注意:上面access_db是某个任务的项目,而后面接的hash是数据库格式,至于sendmail所使用的数据库则是/etc/mail/access.db!更多的FEATURE相关设定项目可以参考/usr/share/sendmail-cf/README。

6. MAILER:这个组件在设定所使用的邮件主机传送邮件(递送,delivery)的代理人,一般而言,我们的代理人都是smpt协议啊,不过,如果我们主机内的用户(主机/etc/passwd存在的实体用户)想要使用sendmail来寄信,那是否仍然要透过smtp这个代理人呢?不太需要的,sendmail本身就提供发信的功能,而要让主机上面的实体用户可以在登入主机环境的中使用sendmail,那你就必需要启动local这个本地端的邮件递送功能!因此,通常这个组件会设定为:
MAILER(local)
MAILER(smtp)
如此一来,当sendmail发现信件来自于主机内部,那就会使用local来传送信件,当信件来自于主机外部时,那才会使用smpt协议来寄信!未来还可以新增procmail!sendmail支持的MAILER可以在/usr/share/sendmail-cf/mailer这个目录中查询的到! 

各个设定组件我们先介绍到这里,至于更详细的说明,请务必到 /usr/share/sendmail-cf/README 这个档案当中寻找!至于其他更完整与新鲜的M4设定项目,请到 http://www.sendmail.org/m4/readme.html 查询喔!下面我们来讨论这个环境参数档设定完毕之后(或者称为M4 scripts)要怎样制作sendmail.cf文件。

Logo

更多推荐