共计 1570 个字符,预计需要花费 4 分钟才能阅读完成。
丸趣 TV 小编给大家分享一下 Postfix 对邮件如何处理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一. 接收邮件的过程
当 postfix 接收到一封新邮件时,新邮件 *** 在 incoming 队列处停留,然后针对不同的情况进行不同的处理:
1. 对于来自于本地的邮件:sendmail 进程负责接收来自本地的邮件放在 maildrop 队列中,然后 pickup 进程对 maildrop 中的邮件进行完整性检测。maildrop 目录的权限必须设置为某一用户不能删除其他用户的邮件。
2. 对于来自于网络的邮件:smtpd 进程负责接收来自于网络的邮件,并且进行安全性检测。可以通过 UCE(unsolicited commercial email) 控制 smtpd 的行为。
3. 由 postfix 进程产生的邮件:这是为了将不可投递的信息返回给发件人。这些邮件是由 bounce 后台程序产生的。
5. 由 postfix 自己产生的邮件:提示 postmaster(也即 postfix 管理员)postfix 运行过程中出现的问题。(如 SMTP 协议问题,违反 UCE 规则的记录等等。)
关于 cleanup 后台程序的说明:cleanup 是对新邮件进行处理的 *** 一道工序,它对新邮件进行以下的处理:添加信头中丢失的 Form 信息; 为将地址重写成标准的 user@fully.qualified.domain 格式进行排列; 重信头中抽出收件人的地址; 将邮件投入 incoming 队列中,并请求邮件队列管理进程处理该邮件; 请求 trivial-rewrite 进程将地址转换成标准的 user@fully.qualified.domain 格式。
二. 投递邮件的过程
新邮件一旦到达 incoming 队列,下一步就是开始投递邮件,postfix 投递邮件时的处理过程如图三所示。相关的说明如下:
邮件队列管理进程是整个 postfix 邮件系统的心脏。它和 local、smtp、pipe 等投递代理相联系,将包含有队列文件路径信息、邮件发件人地址、邮件收件人地址的投递请求发送给投递代理。队列管理进程维护着一个 deferred 队列,那些无法投递的邮件被投递到该队列中。除此之外,队列管理进程还维护着一个 active 队列,该队列中的邮件数目是有限制的,这是为了防止在负载太大时内存溢出。邮件队列管理程序还负责将收件人地址在 relocated 表中列出的邮件返回给发件人,该表包含无效的收件人地址。
如果邮件队列管理进程请求,rewrite 后台程序对收件人地址进行解析。但是缺省地,rewrite 只对邮件收件人是本地的还是远程的进行区别。
如果邮件对你管理进程请求,bounce 后台程序可以生成一个邮件不可投递的报告。
本地投递代理 local 进程可以理解类似 UNIX 风格的邮箱,sendmail 风格的系统别名数据库和 sendmail 风格的.forward 文件。可以同时运行多个 local 进程,但是对同一个用户的并发投递进程数目是有限制的。你可以配置 local 将邮件投递到用户的宿主目录,也可以配置 local 将邮件发送给一个外部命令,如流行的本地投递代理 procmail。在流行的 linux 发行版本 RedHat 中,我们就使用 procmail 作为最终的本地投递代理。
远程投递代理 SMTP 进程根据收件人地址查询一个 SMTP 服务器列表,按照顺序连接每一个 SMTP 服务器,根据性能对该表进行排序。在系统负载太大时,可以有数个并发的 SMTP 进程同时运行。
pipe 是 postfix 调用外部命令处理邮件的机制.
以上是“Postfix 对邮件如何处理”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!