摘取的日志信息
Jan 22 10:08:33 zhjedu postfix/smtpd[21541]: connect from unknown[5.7.9.11]
Jan 22 10:08:33 zhjedu postfix/smtpd[21541]: 837AE3850EC: client=unknown[5.7.9.11], sasl_method=LOGIN, sasl_username=wxiaodong
Jan 22 10:08:33 zhjedu postfix/cleanup[21542]: 837AE3850EC: message-id=<20100122020833.837AE3850EC@mail.test.com>
Jan 22 10:08:34 zhjedu postfix/qmgr[21188]: 837AE3850EC: from=<wxiaodong@test.com>, size=3634, nrcpt=1 (queue active)
Jan 22 10:08:36 zhjedu postfix/smtpd[21541]: disconnect from unknown[5.7.9.11]
Jan 22 10:08:37 zhjedu postfix/smtp[21544]: 837AE3850EC: to=<wxd5981@gmail.com>, relay=gmail-smtp-in.l.google.com[209.85.222.68], delay=4, status=sent (250 2.0.0 OK 1264126131 42si3512720pzk.133)
Jan 22 10:08:37 zhjedu postfix/qmgr[21188]: 837AE3850EC: removed

上面的日志是发送邮件的一整套日志,从客户端连接邮件服务器,到邮件服务器发送邮件出去的过程

我们首先在邮件服务器上运行pstree,然后看一下postfix的相关进程:
master-+-anvil
     |        |-2*[cleanup]
     |        |-local
     |        |-pickup
     |        |-proxymap
     |        |-qmgr
     |        |-2*[smtpd]
     |        `-trivial-rewrite

postfix程序中,首先启动的是master进程,接着master进程负责启动anvil,2个cleanup,local,pickup,proxymap,qmgr,2个smtpd,trivial-rewrite,这个可以通过master.cf文件来控制都启动那些进程
master  进程是postfix的父进程,负责管理其他进程
anvil   进程是控制发信频率
cleanup 它根据canonical和virtual映射,加上缺少的信头,重写邮件地址。在把电子邮件插入到incoming队列之前,cleanup要用trivial-rewrite把它略做重写,这个程序对地址做一些小的修正,例如,给不完整的地址追加一个邮件域名
local     进程是负责投递发往本地的邮件,本地MDA
pickup     进程是负责监听来自本地的邮件,如果有新邮件,就将新邮件投递到cleanup
qmgr       队列管理器,如下是5个队列
           —  incoming(传入)—刚到的邮件;
           —  active(活动)—正在投递的邮件;
           —  deferred(推迟)—以前投递失败的邮件;
           —  hold(约束)—队列中的邮件被系统管理员阻止发送;
           —  corrupt(错误)—不可读或者不可分析的邮件
proxymap    查询表代理服务
smtpd       负责监听来自网络的邮件,例如,foxmail或者outlook发的邮件


从摘取的日志里能够清晰的看到邮件的动态,下面咱们一个一个解析它:

1.   Jan 22 10:08:33 zhjedu postfix/smtpd[21541]: connect from unknown[5.7.9.11]  
     Jan 22 10:08:33   时间   
     zhjedu            主机名
     postfix/smtpd     postfix进程中的smtpd服务
     #客户端连接到邮件服务器,客户端的IP地址是5.7.9.11,是postfix的smtpd进程处理了这个连接请求
2.   Jan 22 10:08:33 zhjedu postfix/smtpd[21541]: 837AE3850EC: client=unknown[5.7.9.11], sasl_method=LOGIN, sasl_username=wxiaodong  
     837AE3850EC  表示的是这封邮件的邮件ID
     client=unknown[5.7.9.11]    表示来自客户端5.7.9.11的连接
     sasl_method=LOGIN           表示的是sasl的认证方法LOGIN 
3.   Jan 22 10:08:33 zhjedu postfix/cleanup[21542]: 837AE3850EC: message-id=<20100122020833.837AE3850EC@mail.test.com>
     postfix/cleanup    表明处理的进程是cleanup 
     message-id         ID
4.   Jan 22 10:08:34 zhjedu postfix/qmgr[21188]: 837AE3850EC: from=<wxiaodong@test.com>, size=3634, nrcpt=1 (queue active)
      postfix/qmgr     表明处理的进程是qmgr,邮件目前已经进入到队列中了
      from=<wxiaodong@test.com>   发件人wxiaodong@test.com
      size=3634     邮件大小
      queue active     已进入active邮件队列
5.   Jan 22 10:08:36 zhjedu postfix/smtpd[21541]: disconnect from unknown[5.7.9.11]
      postfix/smtpd   表明处理的进程是smtpd
      disconnect from unknown[5.7.9.11]    邮件服务器已经断开和客户端的连接

6.   Jan 22 10:08:37 zhjedu postfix/smtp[21544]: 837AE3850EC: to=<wxd5981@gmail.com>, relay=gmail-smtp-in.l.google.com[209.85.222.68], delay=4, status=sent (250 2.0.0 OK 1264126131 42si3512720pzk.133)
       postfix/smtp   表明这个邮件不是发往本地的邮件,需要使用smtp进程来处理这个邮件
       to=<wxd5981@gmail.com>    收件人是wxd5981@gmail.com
       relay=gmail-smtp-in.l.google.com[209.85.222.68]    说明是gmail-smtp-in.l.google.com来接收了发往wxd5981@gmail.com的邮件
       status=sent (250 2.0.0 OK 1264126131 42si3512720pzk.133)    说明邮件的状态是已经接收成功了
7.     Jan 22 10:08:37 zhjedu postfix/qmgr[21188]: 837AE3850EC: removed
        出现removed说明837AE3850EC这封邮件已经投递出去了.