细说Exim4邮件服务器的工作原理


Exim4被设计成能高效地、不间断地在Internet上运行,而且能处理各种混合邮件。Exim4是如何投递邮件和接收邮件的呢?有何安全机制能确保邮件的安全呢?这节将简单介绍Exim4的工作原理。

Exim4 处理的每封邮件都以一个16位字符的名称标识,该标识由三部份组成,以"-"号分隔,如:1GS3YU-0000zG-Nd。这些字符是经过base编码 的,第一部份的原始信息是接收邮件的时间,第二部份的原始信息是接收邮件的进程id,第三部份的信息与配置文件中localhost_number的设置 相关。标识名与时间和进程相关,有效保证了标识名的唯一性。

Exim4通过基于TCP/IP的SMTP协议从其它主机收取邮件。 Exim4接收邮件后,会把邮件分成两个文件保存在spool目录,在我的机器上就是/var/spool/exim4/input/目录。这两个文件的 命名规则是邮件标识后加-D和-H。以-D结尾的文件保存着邮件正文的信息,以-H结尾的文件保存邮件的头信息。在一些操作系统上,同一目录下包含太多的 文件会造成性能问题,所以Exim4也可通过设置split_spool_directory选项,在input目录下再创建62个子目录来保存邮件信 息。这62个子目录以单个字母和数字命名(26个小写字母+26个大写字母+10个数字共62个数字和字母)。这样的设置,使邮件的排队只在子目录下进 行,而不是一个目录所有邮件。所以即使在邮件量不大的情况下也能效提升邮件系统的性能。

接收的邮件会停留在spool目录直到邮件被传递到接收者或被管理员删除。如果邮件不能被传递,则邮件会被打上"frozen"标记,并且不会再尝试投递 该邮件。但管理员可以设置 ignore_bounce_errors_after和timeout_frozen_after选项,指定一定时间后解除邮件的"frozen"状 态。

当Exim4处理邮件时会把处理过程的日志信息保存在/var/log/exim4目录下。其中mainlog日志记录了大量的信息,从中我们可以跟踪 Exim4处理邮件的过程。在一个大负载的服务器上,生成大量的日志信息会影响服务器的性能,所以我们也可以用 no_message_logs参数禁止日志功能。

router和transport是Exim4传递邮件过程中两个重要的环节, router负责处理邮件地址,并把邮件传递给不同的transport作进一步处理,transport负责把spool中的邮件传递到目的地,完成投 递过程。有两种的transport,一种是本地transport,它的目的地是文件或者本机管道(pipe);另一种transport是远程 transport,它的目的地是远程主机。如果一封邮件有多个接收者,则它可能会通过多个transport进行投递。

router和transport都有不同的driver,实现不同的功能。

router drivers

*

accept,

*

dnslookup,

*

ipliteral,

*

iplookup,

*

manualroute,

*

queryprogram,

*

redirect,

transport drivers:

*

appendfile,

*

autoreply,

*

lmtp,

*

pipe

*

smtp

看了Exim4邮件服务器的工作原理,相信大家对Exim4邮件服务器有了全方面的了解,以后我会为大家讲解更多关于Exim4的知识。

  • 在本地和远程配置Exim4
  • 如何在debian下用Exim4发送邮件
  • 18.15.2 Linux上的Exim
  • 18.15.4 Exim和sendmail的相似之处
  • 18.15 Exim邮件系统
  • 18.15.3 配置Exim
  • Exim畸形EHLO/HELO命令远程堆破坏漏洞

相关内容

    暂无相关文章