Linux -- Sendmail 测试

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

[root@li ~]# netstat -ntl |grep 25   --看到默认是只监听了127.0.0.1的回环地址
tcp        0      0127.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/root
cat /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+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 "." on a line by itself
4444444444   --随便写上你要发送的邮件的内容
.    --"." 点号表示结束
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命令查看

--发送邮件方法三:
[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.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指向改为本机


[root@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. --看到这样的信息表示成功


最好把时间同步也配好
[root@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

  

[root@li claws-mail-3.5.0]# netstat -ntl|grep 25
tcp        0      00.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+0800
helo li.cluster.com
250 li.cluster.com
.................


例二:用claws-mail收发邮件

用claws-mail   发送一封邮件给本机用户,能写,但点收信时会报连接到pop.cluster.com:110失败

原因检验:
[root@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服务
[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 143
tcp        0      0:::143                     :::*                       LISTEN     21674/dovecot      
[root@li /]# netstat -ntlup |grep 110
tcp        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 --写上短域名
cluster.com
jordon.com
meijinsz.com.cn
--注意的是写的域名,最好是DNS能解析,否则测试失败

   /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/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


例五:邮件中继

保持上面的配置不变的情况下,用另一台电脑做测试
[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+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. --可以看到中继拒绝


[root@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)

[root@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+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

[root@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+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


验证:
[root@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+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

[root@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+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 "." 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验证的

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值