SendMail与Postfix的架构备忘2

 

一。发送邮件的二种方式:

1.mail命令发送 特点快
1)mail -s "Hello from mzone.cc by shell" admin@mzone.cc
2)hello,this is the content of mail.
3)welcome to www.mzone.cc
第一行是输入的命令,-s表示邮件的主题,后面的admin@mzone.cc则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可 以输入任何文字,比如上面的两行。当邮件正文输入完成后,需要按CTRL+D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了 邮件的发送。

2. SMTP命令发送,繁琐,了解交互过程
1)telnet smtpserver  25

2)helo localhostname

3)mail from:  user1@domain1.com  发送者

4)rcpt to:admin@mzone.cc  接收者

5)data 初始化内容
From:user1@domain1.com
To:user2@domain2.com
Subject: Hello from mzone.cc by shell
hello,this is the content of mail.welcome to www.mzone.cc
.   句号表示正文结束,就象上面的CTRL+D
 
6)quit







二。理解中继:relay 表示该smtp服务器是smtp服务器链路上的一个节点。但不是最终的节点。中继节点是收了再转,而最终节点只收不转。


三。错误场景:邮件有时能收到,有时收不到。
按理说web应用对应的多台服务器会本地中继到到adm01c上。但是发现某些新加的web应用服务器并没有在/var/log/mail/maillog里面写日志。
验证方式:grep SMART /etc/mail/sendmail.mc没有发现相应的内容。可以确定这些新增的服务器没有安装SendMail导致它们的发邮件功能有问题。

解决:
安装SendMail: 注意找sendmail-cf而不是sendmail
yum search sendmail-cf
yum install sendmail-cf -y
同时修改/etc/mail/sendmail.mc文件的SMART_HOST值。并通过m4编译输出到sendmail.cf文件。编译之前,注意将旧的sendmail.cf做备份。之后启动#service sendmail start



四。Postfix的日志分析
下面是一个成功发送邮件的日志片段:
Feb 23 01:53:20 adm01c postfix/smtpd[15584]: connect from web04c.daodao.com[192.168.1.114]
Feb 23 01:53:20 adm01c postfix/smtpd[15584]: 7CD1C1C00121: client=web04c.daodao.com[192.168.1.114]
Feb 23 01:53:20 adm01c postfix/cleanup[15587]: 7CD1C1C00121: message-id=<201202230652.q1N6poqV005021@web04c.daodao.com>
Feb 23 01:53:20 adm01c postfix/qmgr[19139]: 7CD1C1C00121: from=<support@daodao.com>, size=566, nrcpt=1 (queue active)
Feb 23 01:53:20 adm01c postfix/smtpd[15584]: disconnect from web04c.daodao.com[192.168.1.114]
Feb 23 01:53:22 adm01c postfix/smtp[15588]: 7CD1C1C00121: to=<bogaoyi@gmail.com>, relay=gmail-smtp-in.l.google.com[209.85.225.26]:25, delay=2.4, delays=0.06/0.01/1.1/1.2, dsn=2.0.0, status=sent (250 2.0.0 OK 1329980002 vw6si606526igb.60)
Feb 23 01:53:22 adm01c postfix/qmgr[19139]: 7CD1C1C00121: removed


Feb 23 02:13:28 adm01c postfix/smtp[17246]: connect to pp.com[74.117.114.92]: Connection timed out (port 25)
Feb 23 02:13:28 adm01c postfix/smtp[17246]: 9BC951C00123: to=<1158824774@pp.com>, relay=none, delay=262614, delays=262584/0.01/30/0, dsn=4.4.1, status=deferred (connect to pp.com[74.117.114.92]: Connection timed out)
Feb 23 02:14:27 adm01c postfix/smtpd[17319]: connect from bak01c.daodao.com[192.168.1.131]
Feb 23 02:14:27 adm01c postfix/smtpd[17319]: 800B21C00121: client=bak01c.daodao.com[192.168.1.131]
Feb 23 02:14:27 adm01c postfix/cleanup[17321]: 800B21C00121: message-id=<1919695525.581329981267430.JavaMail.root@bak01c.daodao.com>
Feb 23 02:14:27 adm01c postfix/smtpd[17319]: disconnect from bak01c.daodao.com[192.168.1.131]
Feb 23 02:14:27 adm01c postfix/qmgr[19139]: 800B21C00121: from=<support@daodao.com>, size=7617, nrcpt=2 (queue active)
Feb 23 02:14:28 adm01c postfix/smtp[17064]: 800B21C00121: to=<112733485@qq.com>, relay=mx3.qq.com[113.108.76.219]:25, delay=0.99, delays=0.02/0/0.23/0.74, dsn=2.0.0, status=sent (250 Ok: queued as )
Feb 23 02:14:29 adm01c postfix/smtp[17244]: 800B21C00121: to=<support-daodao@tripadvisor.com>, relay=webmail.tripadvisor.com[146.115.38.21]:25, delay=2.3, delays=0.02/0/1.3/0.9, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 090E51798D5CC)


在postfix的日志里:
如果status=sent表示已经成功发送。removed表示从队列中删除发送的邮件
如果status= deferred表示延期,需要重试,当重试到一定次数,还失败就抛弃


五。MX记录
最初以为发不出邮件是由于MX记录的问题。MX是DNS多种类型的记录中的一种。DNS经常使用的是A记录。用来根据根据rcpt to对应的邮箱取出后面的域名进行路由时的依据。
下面是postfix的MX路由报错,因为用户把sina写成了sian,tripadvisor写成了tripdvisor导致无法路由
Feb 23 02:13:05 adm01c postfix/smtp[17064]: 48F561C00080: to=<hygy2011@sian.com>, relay=none, delay=167680, delays=167673/0/6.9/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=sian.com type=MX: Host not found, try again)
Feb 23 02:13:05 adm01c postfix/smtp[17244]: 412C31C0011C: to=<lsbg4228575@sian.com>, relay=none, delay=92243, delays=92236/0.01/7/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=sian.com type=MX: Host not found, try again)
Feb 23 02:13:10 adm01c postfix/smtp[17245]: C9EA01C0003C: to=<gpotter@tripdvisor.com>, relay=none, delay=322597, delays=322586/0.01/12/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=tripdvisor.com type=MX: Host not found, try again)

 
原文地址:https://www.cnblogs.com/highriver/p/2367141.html