设为首页 收藏本站
查看: 1954|回复: 0

[经验分享] Linux -- Sendmail 测试

[复制链接]

尚未签到

发表于 2015-11-25 14:44:42 | 显示全部楼层 |阅读模式
  sendmail
  MUA (mail user agent   邮件用户代理),用于用户端发送邮件或者阅读邮件   linux有mutt这个工具
  MTA (mail tranfer agent 邮件传输代理 ),相当于一个邮局,server端的软件,主要的功能有,接收MUA发来的邮件和把邮件发送给下一个MTA,可以说是一个邮件路由(mail router),server端的软件就属于MTA,现在开源的有sendmail,postfix,qmail等
  MDA (mail devilery agent 邮件投递代理),主要是将MTA所接受的邮件,依照邮件的目的地将此邮件放到本机账号下或者是给下一个MTA,一般就是指mail这样的命令
  邮件的协议:
  发信: SMTP (simple mail tranferprotocol 简单邮件传输协议)   端口号 TCP的25端口,在发信时,MUA会主动连接MTA的port 25,然后经由SMTP协议发送出去,SMTP分为接受SMTP和发送SMTP,它不管两端主机的配置或者系统等,只要两边SMTP协议OK就可以发送邮 件
  收信: POP   (post office protocol   邮局协议),来连接到MTA,以读取或者下载邮件,现在常用的版本是POP3,端口为110
IMAP   (internet message access protocol 网络报文件协议),能在下载邮件前先下载邮件头信息,以可以让用户选择性下载端口 143
  
软件包
  yum install sendmail*
   yum install dovecot
  
sendmail.i386     --邮件服务器端    MTA                     
sendmail-cf.i386        --配置文件包                  
sendmail-devel.i386      --开发包            
sendmail-doc.i386    --文档包
dovecot.i386   --(鸽舍) ,pop邮件服务端    MDA
m4.i386 --处理配置文件的包
  端口 :        smtp(25)      pop3 (110)     imap(143)
  协议: TCP
  服务启动脚本:   
  /etc/init.d/sendmail
/etc/init.d/dovecot
  配置文件:
/etc/mail/sendmail.cf --sendmail邮件服务启动时读取的主配置文件
/etc/mail/sendmail.mc --管理员修改sendmail服务器功能时的配置文件
/etc/mail/local-host-names --配置支持发送邮件时使用短域名形式
/etc/mail/virtusertable --虚拟用户列表
/etc/aliases    --用户别名
/etc/mail/access   --邮件中继
  /etc/init.d/sendmail restart
  [iyunv@li ~]# netstat -ntl |grep 25   --看到默认是只监听了127.0.0.1的回环地址
tcp        0      0127.0.0.1:25               0.0.0.0:*                  LISTEN     
  --发送邮件方法一:
[iyunv@li ~]# mail -s "mail" root@li.cluster.com--用此命令发送邮件 -s后接邮件主题
1111     --写邮件内容   
.     --“." 点号表示结束
Cc:     --直接回车退出
  [iyunv@li ~]# mail -s 'yyyy' a@li.cluster.com < /etc/grub.conf --还可以这样把/etc/grub.conf的内容直接发送给a用户
  
--查看邮件方法一:
cat /var/mail/root
cat /var/spool/mail/root --查看这两个一样的 这样是可以查看到刚才发送的邮件,因为一个是自己发送给自己用的127.0.0.1这个回环地址,这种情况不需要DNS的MX支持
  --发送邮件方法二:
[iyunv@li ~]# telnet 127.0.0.1 25 --对smtp协议进行验证
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 li.cluster.com ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 11:30:09&#43;0800
helo li.cluster.com   --定义来访者,可以用help去查看支持哪些命令集,用help+命令来看单个命令如何使用
250 li.cluster.com Hello localhost.localdomain [127.0.0.1], pleased to meet you
mail from:aa@sina.com --定义一个发送者,这里可以随便定义
250 2.1.0 aa@sina.com... Sender ok
rcpt to:a@li.cluster.com --定义接收者,这里是我本机的a用户
250 2.1.5 a@li.cluster.com... Recipientok
data   --表示下面要写邮件内容
354 Enter mail, end with &quot;.&quot; on a line by itself
4444444444   --随便写上你要发送的邮件的内容
.    --&quot;.&quot; 点号表示结束
250 2.0.0 o4T3U9l1026581 Message accepted for delivery
quit    --quit退出,有时候一次退不出,就多敲几次quit
221 2.0.0 li.cluster.com closing connection
Connection closed by foreign host.
  yum install mutt
  mutt   --是一个在unix-like系统下小巧但强大的基于文本的一个能发送和阅读邮件的工具(MUA)
  --查看邮件方法二:
直接在root用户下使用mutt命令,可以看到root用户的收信箱
  如果要看普通的邮件,就要先su - 普通用户名 切换到普通用户再使用mutt命令查看
  --发送邮件方法三:
[iyunv@li ~]# mutt a@li.cluster.com --可以直接使用这样的命令发送给a@li.cluster.com
,会提示用户写内容,还有附件等功能
  --发送邮件方法四:
[iyunv@li ~]# cat /etc/rc.local |sendmail -v a@li.cluster.com
  -------------------------
  下面先把DNS的MX记录给配置好
[iyunv@li mail]# vim /var/named/chroot/var/named/data/master.cluster.com.zone
$TTL 86400
@       IN     SOA    li.cluster.com.        root.cluster.com. (
                       2010051605
                       60
                       60
                       360
                       86400)
        IN     NS      li.cluster.com.
        IN     MX   0 li.cluster.com. --MX是邮件交换记录,0是代表优先级别,可以写多个,数字越小优先级越高
li     IN     A       10.1.1.35
pop     IN     A       10.1.1.35
smtp    IN     A       10.1.1.35
  
/etc/init.d/named reload
  vim /etc/resolv.conf --DNS指向改为本机
  
[iyunv@li mail]# nslookup    --验证MX记录的方法
> set type=mx
> cluster.com
Server:         10.1.1.35
Address:        10.1.1.35#53
  cluster.com     mail exchanger = 0li.cluster.com. --看到这样的信息表示成功
  
最好把时间同步也配好
[iyunv@li mail]# echo 'while :; do ntpdate 10.1.1.1> /dev/null2>/dev/null; sleep 10; done'>> /etc/rc.local
  --每十秒同步一次10.1.1.1,放到/etc/rc.local里,开机自动运行
  把邮件客户端软件claws-mail拷过去装好
ls /share/soft/soft/mail_client/
  tar xvf/share/soft/soft/mail_client/claws-mail-3.5.0.tar.gz -C /usr/src/
  tar xvf /share/soft/soft/mail_client/libetpan-0.57.tar.gz-C /usr/src/
  cd /usr/src/libetpan-0.57/
  ./configure ;make ;make install
  cd /usr/src/claws-mail-3.5.0/
  ./configure ;make ;make install
  例一:让smtp协议监听所有端口
  vim /etc/mail/sendmail.mc
  DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl --把127.0.0.1改为0.0.0.0,或者是把中间那一小段去掉
  保存退出
  
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf --如果没有装m4.i386这个包,就需要使用m4命令去生成sendmail.cf配置文件,装了就不需要,重启sendmail服务自动生成
  
   /etc/init.d/sendmail restart
  
  [iyunv@li claws-mail-3.5.0]# netstat -ntl|grep 25
tcp        0      00.0.0.0:25                 0.0.0.0:*                  LISTEN
  [iyunv@li claws-mail-3.5.0]# telnet 10.1.1.35 25 --对本机的IP(非回环地址)做smtp协议的测试是可以做的,如果只监听127.0.0.1,就不能这样用IP测试
Trying 10.1.1.35...
Connected to li.cluster.com (10.1.1.35).
Escape character is '^]'.
220 li.cluster.com ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 13:47:01&#43;0800
helo li.cluster.com
250 li.cluster.com
.................
  
例二:用claws-mail收发邮件
  用claws-mail   发送一封邮件给本机用户,能写,但点收信时会报连接到pop.cluster.com:110失败
  原因检验:
[iyunv@li /]# nslookup pop.cluster.com --先查看DNS,能解析
Server:         10.1.1.35
Address:        10.1.1.35#53
  Name:   pop.cluster.com
Address: 10.1.1.35
  netstat -ntl |grep 110 --再查看端口,发现没有110端口,表示pop3协议没有配置
  
所以要去配置dovecot服务
[iyunv@li /]# vim /etc/dovecot.conf
  protocols = imap imaps pop3 pop3s --在20行找到有一行注释,打开注释,或者写一行,表示支持pop3和imap协议
  /etc/init.d/dovecot   restart --重启服务后,就可以看到监听143和110端口打开了
  [iyunv@li /]# netstat -ntlup |grep 143
tcp        0      0:::143                     :::*                       LISTEN     21674/dovecot      
[iyunv@li /]# netstat -ntlup |grep 110
tcp        0      0:::110                     :::*                       LISTEN     21674/dovecot     
  
然后就可以收邮件了
  
例三:使用支持短域名来发送邮件
  [iyunv@li /]# mail -s '222' a@cluster.com--使用短域名
222222
.
Cc:
  [iyunv@li /]# tail /var/mail/a --查看时看不到,表示不支持短域名
  [iyunv@li /]# tail /var/mail/root --可以看到扔到root的邮箱去了
  配置方法:
[iyunv@li /]# vim /etc/mail/local-host-names --写上短域名
cluster.com
jordon.com
meijinsz.com.cn
--注意的是写的域名,最好是DNS能解析,否则测试失败
  /etc/init.d/sendmail reload
  再用短域名发送并测试发现是可以成功的
  
例四:邮件别名,邮件转发,邮件群发
[iyunv@li /]# vim /etc/aliases
加上
  a: b   --表示发送给a用户的邮件,发给了b用户,a用户自己收不到
c: d,e,f   --表示发送c用户的邮件,发给了d,e,f三个用户,a用户自己收不到
salegroup:      :include:/etc/mail/salegroup --还可以这样写,把一些用户分组,注意/etc/mail/salegroup是不存在的,要手动建立并把这个组的成员写进去,一行一个用户;测试时发 给的用户名要写成salegroup,例如:mail -s '7777'salegroup@cluster.com
  
   /etc/init.d/sendmail reload
  
例五:邮件的虚拟账号,虚拟用户表&#26684;
[iyunv@li /]# vim /etc/mail/virtusertable
  a@cluster.com  b@cluster.com --把b@cluster.com的账号虚拟成a@cluster.com账号
@cluster.com    c   --所有发往cluster.com域的邮件都会发到本地的c用户的mailbox
  /etc/init.d/sendmail reload
  
例五:邮件中继
  保持上面的配置不变的情况下,用另一台电脑做测试
[iyunv@dns ~]# telnet 10.1.1.35 25 --另一台电脑测试35这台服务器上的smtp协议
Trying 10.1.1.35...
Connected to 10.1.1.35 (10.1.1.35).
Escape character is '^]'.
220 li.cluster.com ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 15:39:36&#43;0800
helo dns.lu.com
250 li.cluster.com Hello [10.1.1.218], pleased to meet you
mail from:sdfsa@baidu.com
250 2.1.0 sdfsa@baidu.com... Sender ok
rcpt to:sfsadfa@qq.com
550 5.7.1 sfsadfa@qq.com... Relayingdenied. --可以看到中继拒绝
  
[iyunv@li /]# vim /etc/mail/access --默认是只允许127.0.0.1中继
  
Connect:10.1.1.218    OK   --非常信任的主机可以用OK
Connect:10.1.1                   RELAY   --表示允许10.1.1.0网段中继
FROM:sina.com    REJECT   --表示从sina.com来的邮件都拒绝
TO:baidu.com     discard --到baidu.com的邮件丢弃
  --reject和discard的区别,discard是直接丢弃,reject还要返回一个错误或者警告
  
我在这里加上了
Connect:10.1.1                   RELAY
  /etc/init.d/sendmail reload
  
再用刚才的另一台电脑来测试(要是10.1.1.0网段,因为上面我只允许这个网段relay)
  [iyunv@dns ~]# telnet 10.1.1.35 25
Trying 10.1.1.35...
Connected to 10.1.1.35 (10.1.1.35).
Escape character is '^]'.
220 li.cluster.com ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 15:51:35&#43;0800
helo dns.lu.con
250 li.cluster.com Hello [10.1.1.218], pleased to meet you
mail from:sfsafa@163.com
250 2.1.0 sfsafa@163.com... Sender ok
rcpt to:sdfsadf@gmail.com
250 2.1.5 sdfsadf@gmail.com... Recipientok   --这次测试没有报relay deny的错误
  
-------------------------------------------------------------------
  
使用smtp验证
  yum install cyrus-sasl*
  vim /etc/mail/sendmail.mc    --把下面三行注释打开
  TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGINPLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGINPLAIN')dnl
  DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
  
/etc/init.d/sendmail restart
/etc/init.d/dovecot restart
/etc/init.d/saslauthd restart
  [iyunv@li /]# telnet 10.1.1.35 25
Trying 10.1.1.35...
Connected to li.cluster.com (10.1.1.35).
Escape character is '^]'.
220 li.cluster.com ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 16:42:54&#43;0800
ehlo li.cluster.com   --注意这里是ehlo 不是 helo
250-li.cluster.com Hello li.cluster.com [10.1.1.35], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN   --看到这里有login plain验证信息表示支持smtp验证
250-DELIVERBY
250 HELP
  
验证:
[iyunv@li /]# telnet 10.1.1.35 25
Trying 10.1.1.35...
Connected to li.cluster.com (10.1.1.35).
Escape character is '^]'.
220 li.cluster.com ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 16:45:12&#43;0800
helo li.cluster.com
250 li.cluster.com Hello li.cluster.com [10.1.1.35], pleased to meet you
mail from:fsfafa@baidu.com   
250 2.1.0 fsfafa@baidu.com... Senderok   --这里没有要求验证
  原因:是因为smtp验证默认只是在587端口,而不是25端口,所以你还是直接telnet 10.1.1.35 25 就避开了使用smtp验证
  vim /etc/mail/sendmail.mc
  把下面这句
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
改为
DAEMON_OPTIONS(`Port=25, Name=MSA, M=Ea')dnl
  
然后还要
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl --把这名注释掉,注意注释时用dnl,不用#
  --表示强制使用smtp验证
  /etc/init.d/sendmail restart
  [iyunv@li /]# telnet 10.1.1.35 25
Trying 10.1.1.35...
Connected to li.cluster.com (10.1.1.35).
Escape character is '^]'.
220 li.cluster.com ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 16:55:58&#43;0800
helo li.cluster.com
250 li.cluster.com Hello li.cluster.com [10.1.1.35], pleased to meet you
mail from:sfsafsa@sina.com
530 5.7.0 Authentication required   --现在就会看到需要验证
auth login    --开始验证
334 VXNlcm5hbWU6
a    --输入用户名,会报错,因为这里是用base64位编码
501 5.5.4 cannot decode AUTH parameter a
auth login
334 VXNlcm5hbWU6
YQ==    --这就是a的base64位编码
334 UGFzc3dvcmQ6
MTIz    --这是123的base64位编码
235 2.0.0 OK Authenticated   --验证成功,可以发送邮件了
mail from:sdfasfas@sina.com
250 2.1.0 sdfasfas@sina.com... Sender ok
rcpt to:b@cluster.com
250 2.1.5 b@cluster.com... Recipient ok
data
354 Enter mail, end with &quot;.&quot; on a line by itself
last test
.
250 2.0.0 o4T8twFU025598 Message accepted for delivery
quit
221 2.0.0 li.cluster.com closing connection
Connection closed by foreign host.
  
cat /var/mail/b    是可以看到发送的邮件
  ---------------
  用claws-mail来验证
  点设置--目前账号的偏好设置--发送--把SMTP鉴权(SMTPAUTH)前面的勾打上--鉴权方式选PLAIN--用户ID和密码写上本机的一个普通名和其密码就OK
  再发送信件等都是经过了SMTP验证的
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143500-1-1.html 上篇帖子: 关闭Sendmail服务具体命令实现 下篇帖子: Linux 用Sendmail架设Mail服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表