http://10.1.1.35/ule_basic/ule15_sendmail.txt

来源:互联网 发布:民航航线图数据下载 编辑:程序博客网 时间:2024/06/05 23:01
--sendmailMUA(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 tranfer protocol 简单邮件传输协议) 端口号 TCP的25端口,在发信时,MUA会主动连接MTA的port 25,然后经由SMTP协议发送出去,SMTP分为接受SMTP和发送SMTP,它不管两端主机的配置或者系统等,只要两边SMTP协议OK就可以发送邮件收信:POP (post office protocol 邮局协议),来连接到MTA,以读取或者下载邮件,现在常用的版本是POP3,端口为110IMAP (internet message access protocol 网络报文件协议),能在下载邮件前先下载邮件头信息,以可以让用户选择性下载端口 143软件包yum install sendmail* yum install dovecotsendmail.i386 --邮件服务器端 MTA sendmail-cf.i386 --配置文件包 sendmail-devel.i386 --开发包 sendmail-doc.i386 --文档包dovecot.i386--(鸽舍),pop邮件服务端 MDAm4.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[root@li ~]# netstat -ntl |grep 25--看到默认是只监听了127.0.0.1的回环地址tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN --发送邮件方法一:[root@li ~]# mail -s "mail" root@li.cluster.com --用此命令发送邮件-s后接邮件主题1111--写邮件内容.--“." 点号表示结束Cc:--直接回车退出[root@li ~]# mail -s 'yyyy' a@li.cluster.com < /etc/grub.conf --还可以这样把/etc/grub.conf的内容直接发送给a用户--查看邮件方法一:cat /var/mail/rootcat /var/spool/mail/root--查看这两个一样的这样是可以查看到刚才发送的邮件,因为一个是自己发送给自己用的127.0.0.1这个回环地址,这种情况不需要DNS的MX支持--发送邮件方法二:[root@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 +0800helo li.cluster.com--定义来访者,可以用help去查看支持哪些命令集,用help+命令来看单个命令如何使用250 li.cluster.com Hello localhost.localdomain [127.0.0.1], pleased to meet youmail from:aa@sina.com--定义一个发送者,这里可以随便定义250 2.1.0 aa@sina.com... Sender okrcpt to:a@li.cluster.com--定义接收者,这里是我本机的a用户250 2.1.5 a@li.cluster.com... Recipient okdata--表示下面要写邮件内容354 Enter mail, end with "." on a line by itself4444444444--随便写上你要发送的邮件的内容.--"." 点号表示结束250 2.0.0 o4T3U9l1026581 Message accepted for deliveryquit--quit退出,有时候一次退不出,就多敲几次quit221 2.0.0 li.cluster.com closing connectionConnection closed by foreign host.yum install mutt mutt --是一个在unix-like系统下小巧但强大的基于文本的一个能发送和阅读邮件的工具(MUA)--查看邮件方法二:直接在root用户下使用mutt命令,可以看到root用户的收信箱如果要看普通的邮件,就要先su - 普通用户名 切换到普通用户再使用mutt命令查看--发送邮件方法三:[root@li ~]# mutt a@li.cluster.com--可以直接使用这样的命令发送给a@li.cluster.com,会提示用户写内容,还有附件等功能--发送邮件方法四:[root@li ~]# cat /etc/rc.local |sendmail -v a@li.cluster.com-------------------------下面先把DNS的MX记录给配置好[root@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.35pop IN A 10.1.1.35smtp IN A 10.1.1.35/etc/init.d/named reloadvim /etc/resolv.conf --DNS指向改为本机[root@li mail]# nslookup --验证MX记录的方法> set type=mx> cluster.comServer: 10.1.1.35Address: 10.1.1.35#53cluster.com mail exchanger = 0 li.cluster.com.--看到这样的信息表示成功最好把时间同步也配好[root@li mail]# echo 'while :; do ntpdate 10.1.1.1> /dev/null 2>&1; 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.mcDAEMON_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[root@li claws-mail-3.5.0]# netstat -ntl|grep 25tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN[root@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 +0800helo li.cluster.com250 li.cluster.com .................例二:用claws-mail收发邮件用claws-mail 发送一封邮件给本机用户,能写,但点收信时会报连接到pop.cluster.com:110失败原因检验:[root@li /]# nslookup pop.cluster.com--先查看DNS,能解析Server: 10.1.1.35Address: 10.1.1.35#53Name: pop.cluster.comAddress: 10.1.1.35netstat -ntl |grep 110--再查看端口,发现没有110端口,表示pop3协议没有配置所以要去配置dovecot服务[root@li /]# vim /etc/dovecot.conf protocols = imap imaps pop3 pop3s--在20行找到有一行注释,打开注释,或者写一行,表示支持pop3和imap协议/etc/init.d/dovecot restart--重启服务后,就可以看到监听143和110端口打开了[root@li /]# netstat -ntlup |grep 143tcp 0 0 :::143 :::* LISTEN 21674/dovecot [root@li /]# netstat -ntlup |grep 110tcp 0 0 :::110 :::* LISTEN 21674/dovecot 然后就可以收邮件了例三:使用支持短域名来发送邮件[root@li /]# mail -s '222' a@cluster.com--使用短域名222222.Cc: [root@li /]# tail /var/mail/a--查看时看不到,表示不支持短域名[root@li /]# tail /var/mail/root --可以看到扔到root的邮箱去了配置方法:[root@li /]# vim /etc/mail/local-host-names --写上下面两句本服务器主机名本服务器域名/etc/init.d/sendmail reload再用短域名发送并测试发现是可以成功的例四:邮件别名,邮件转发,邮件群发[root@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例五:邮件的虚拟账号,虚拟用户表格[root@li /]# vim /etc/mail/virtusertablea@cluster.com b@cluster.com--把b@cluster.com的账号虚拟成a@cluster.com账号@cluster.com c--所有发往cluster.com域的邮件都会发到本地的c用户的mailbox/etc/init.d/sendmail reload例五:邮件中继保持上面的配置不变的情况下,用另一台电脑做测试[root@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 +0800helo dns.lu.com250 li.cluster.com Hello [10.1.1.218], pleased to meet youmail from:sdfsa@baidu.com250 2.1.0 sdfsa@baidu.com... Sender okrcpt to:sfsadfa@qq.com550 5.7.1 sfsadfa@qq.com... Relaying denied. --可以看到中继拒绝[root@li /]# vim /etc/mail/access--默认是只允许127.0.0.1中继Connect:10.1.1.218OK--非常信任的主机可以用OKConnect:10.1.1 RELAY--表示允许10.1.1.0网段中继FROM:sina.comREJECT--表示从sina.com来的邮件都拒绝TO:baidu.comdiscard--到baidu.com的邮件丢弃--reject和discard的区别,discard是直接丢弃,reject还要返回一个错误或者警告我在这里加上了Connect:10.1.1 RELAY/etc/init.d/sendmail reload再用刚才的另一台电脑来测试(要是10.1.1.0网段,因为上面我只允许这个网段relay)[root@dns ~]# telnet 10.1.1.35 25Trying 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 +0800helo dns.lu.con250 li.cluster.com Hello [10.1.1.218], pleased to meet youmail from:sfsafa@163.com250 2.1.0 sfsafa@163.com... Sender okrcpt to:sdfsadf@gmail.com250 2.1.5 sdfsadf@gmail.com... Recipient ok--这次测试没有报relay deny的错误-------------------------------------------------------------------使用smtp验证 yum install cyrus-sasl*vim /etc/mail/sendmail.mc --把下面三行注释打开TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnldefine(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')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[root@li /]# telnet 10.1.1.35 25Trying 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 +0800ehlo li.cluster.com--注意这里是ehlo 不是 helo250-li.cluster.com Hello li.cluster.com [10.1.1.35], pleased to meet you250-ENHANCEDSTATUSCODES250-PIPELINING250-8BITMIME250-SIZE250-DSN250-ETRN250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN--看到这里有login plain验证信息表示支持smtp验证250-DELIVERBY250 HELP验证:[root@li /]# telnet 10.1.1.35 25Trying 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 +0800helo li.cluster.com250 li.cluster.com Hello li.cluster.com [10.1.1.35], pleased to meet youmail from:fsfafa@baidu.com250 2.1.0 fsfafa@baidu.com... Sender ok--这里没有要求验证原因:是因为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[root@li /]# telnet 10.1.1.35 25Trying 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 +0800helo li.cluster.com250 li.cluster.com Hello li.cluster.com [10.1.1.35], pleased to meet youmail from:sfsafsa@sina.com530 5.7.0 Authentication required--现在就会看到需要验证auth login--开始验证334 VXNlcm5hbWU6a--输入用户名,会报错,因为这里是用base64位编码501 5.5.4 cannot decode AUTH parameter aauth login334 VXNlcm5hbWU6YQ==--这就是a的base64位编码334 UGFzc3dvcmQ6MTIz--这是123的base64位编码235 2.0.0 OK Authenticated--验证成功,可以发送邮件了mail from:sdfasfas@sina.com250 2.1.0 sdfasfas@sina.com... Sender okrcpt to:b@cluster.com250 2.1.5 b@cluster.com... Recipient okdata354 Enter mail, end with "." on a line by itselflast test.250 2.0.0 o4T8twFU025598 Message accepted for deliveryquit221 2.0.0 li.cluster.com closing connectionConnection closed by foreign host.cat /var/mail/b 是可以看到发送的邮件---------------用claws-mail来验证点设置--目前账号的偏好设置--发送--把SMTP鉴权(SMTP AUTH)前面的勾打上--鉴权方式选PLAIN--用户ID和密码写上本机的一个普通名和其密码就OK再发送信件等都是经过了SMTP验证的-------------------下面是一个base64编码在线转换的一个网页http://www.motobit.com/util/base64-decoder-encoder.asp
原创粉丝点击