2024年3月21日发(作者:房俊友)
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 tranfer protocol 简单邮件传输协议) 端口号 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邮件服务启动时读取的主配置文件
/etc/mail/ --管理员修改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@ --用此命令发送邮件 -s后接邮件
主题
1111 --写邮件内容
. --“." 点号表示结束
Cc: --直接回车退出
[root@li ~]# mail -s 'yyyy' a@ < /etc/ --还可以这样把
/etc/的内容直接发送给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.
Connected to omain (127.0.0.1).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 11:30:09
+0800
helo --定义来访者,可以用help去查看支持哪些命令集,用help+
命令来看单个命令如何使用
250 Hello omain [127.0.0.1], pleased to meet you
mail from:aa@ --定义一个发送者,这里可以随便定义
250 2.1.0 aa@... Sender ok
rcpt to:a@ --定义接收者,这里是我本机的a用户
250 2.1.5 a@... Recipient ok
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 closing connection
Connection closed by foreign host.
yum install mutt
mutt --是一个在unix-like系统下小巧但强大的基于文本的一个能发送和阅读邮件
的工具(MUA)
--查看邮件方法二:
直接在root用户下使用mutt命令,可以看到root用户的收信箱
如果要看普通的邮件,就要先su - 普通用户名 切换到普通用户再使用mutt命令查
看
--发送邮件方法三:
[root@li ~]# mutt a@ --可以直接使用这样的命令发送给
a@
,会提示用户写内容,还有附件等功能
--发送邮件方法四:
[root@li ~]# cat /etc/ |sendmail -v a@
-------------------------
下面先把DNS的MX记录给配置好
[root@li mail]# vim
/var/named/chroot/var/named/data/
$TTL 86400
@ IN SOA . . (
2010051605
60
60
360
86400)
IN NS .
IN MX 0 . --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/ --DNS指向改为本机
[root@li mail]# nslookup --验证MX记录的方法
> set type=mx
>
Server: 10.1.1.35
Address: 10.1.1.35#53
mail exchanger = 0 . --看到这样的信息表示成功
最好把时间同步也配好
[root@li mail]# echo 'while :; do ntpdate 10.1.1.1> /dev/null 2>/dev/null; sleep
10; done'>> /etc/
--每十秒同步一次10.1.1.1,放到/etc/里,开机自动运行
把邮件客户端软件claws-mail拷过去装好
ls /share/soft/soft/mail_client/
tar xvf /share/soft/soft/mail_client/ -C /usr/src/
tar xvf /share/soft/soft/mail_client/ -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/
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl --把127.0.0.1
改为0.0.0.0,或者是把中间那一小段去掉
保存退出
m4 /etc/mail/ > /etc/mail/ --如果没有装m4.i386这个
包,就需要使用m4命令去生成配置文件,装了就不需要,重启sendmail
服务自动生成
/etc/init.d/sendmail restart
[root@li claws-mail-3.5.0]# netstat -ntl|grep 25
tcp 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.
Connected to (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 13:47:01
+0800
helo
250
.................
例二:用claws-mail收发邮件
用claws-mail 发送一封邮件给本机用户,能写,但点收信时会报连接到
:110失败
原因检验:
[root@li /]# nslookup --先查看DNS,能解析
Server: 10.1.1.35
Address: 10.1.1.35#53
Name:
Address: 10.1.1.35
netstat -ntl |grep 110 --再查看端口,发现没有110端口,表示pop3协议没有配置
所以要去配置dovecot服务
[root@li /]# vim /etc/
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/dovec
ot
[root@li /]# netstat -ntlup |grep 110
tcp 0 0 :::110 :::* LISTEN 21674/dovec
ot
然后就可以收邮件了
例三:使用支持短域名来发送邮件
[root@li /]# mail -s '222' a@ --使用短域名
222222
.
Cc:
[root@li /]# tail /var/mail/a --查看时看不到,表示不支持短域名
[root@li /]# tail /var/mail/root --可以看到扔到root的邮箱去了
配置方法:
[root@li /]# vim /etc/mail/local-host-names --写上短域名
--注意的是写的域名,最好是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@
/etc/init.d/sendmail reload
例五:邮件的虚拟账号,虚拟用户表格
[root@li /]# vim /etc/mail/virtusertable
a@ b@ --把b@的账号虚拟成
a@账号
@ c --所有发往域的邮件都会发到本地的c用户的
mailbox
/etc/init.d/sendmail reload
例五:邮件中继
保持上面的配置不变的情况下,用另一台电脑做测试
[root@dns ~]# telnet 10.1.1.35 25 --另一台电脑测试35这台服务器上的smtp协
议
Trying 10.1.
Connected to 10.1.1.35 (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 15:39:36
+0800
helo
250 Hello [10.1.1.218], pleased to meet you
mail from:sdfsa@
250 2.1.0 sdfsa@... Sender ok
rcpt to:sfsadfa@
550 5.7.1 sfsadfa@... Relaying denied. --可以看到中继拒绝
[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: REJECT --表示从来的邮件都拒绝
TO: discard --到的邮件丢弃
--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.
Connected to 10.1.1.35 (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 15:51:35
+0800
helo
250 Hello [10.1.1.218], pleased to meet you
mail from:sfsafa@
250 2.1.0 sfsafa@... Sender ok
rcpt to:sdfsadf@
250 2.1.5 sdfsadf@... Recipient ok --这次测试没有报relay deny的错
误
-------------------------------------------------------------------
使用smtp验证
yum install cyrus-sasl*
vim /etc/mail/ --把下面三行注释打开
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`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 25
Trying 10.1.
Connected to (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 16:42:54
+0800
ehlo --注意这里是ehlo 不是 helo
Hello [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.
Connected to (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 16:45:12
+0800
helo
250 Hello [10.1.1.35], pleased to meet you
mail from:fsfafa@
250 2.1.0 fsfafa@... Sender ok --这里没有要求验证
原因:是因为smtp验证默认只是在587端口,而不是25端口,所以你还是直接telnet
10.1.1.35 25 就避开了使用smtp验证
vim /etc/mail/
把下面这句
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.
Connected to (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 16:55:58
+0800
helo
250 Hello [10.1.1.35], pleased to meet you
mail from:sfsafsa@
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@
250 2.1.0 sdfasfas@... Sender ok
rcpt to:b@
250 2.1.5 b@... 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 closing connection
Connection closed by foreign host.
cat /var/mail/b 是可以看到发送的邮件
---------------
用claws-mail来验证
点设置--目前账号的偏好设置--发送--把SMTP鉴权(SMTP AUTH)前面的勾
打上--鉴权方式选PLAIN--用户ID和密码写上本机的一个普通名和其密码就OK
再发送信件等都是经过了SMTP验证的
2024年3月21日发(作者:房俊友)
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 tranfer protocol 简单邮件传输协议) 端口号 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邮件服务启动时读取的主配置文件
/etc/mail/ --管理员修改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@ --用此命令发送邮件 -s后接邮件
主题
1111 --写邮件内容
. --“." 点号表示结束
Cc: --直接回车退出
[root@li ~]# mail -s 'yyyy' a@ < /etc/ --还可以这样把
/etc/的内容直接发送给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.
Connected to omain (127.0.0.1).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 11:30:09
+0800
helo --定义来访者,可以用help去查看支持哪些命令集,用help+
命令来看单个命令如何使用
250 Hello omain [127.0.0.1], pleased to meet you
mail from:aa@ --定义一个发送者,这里可以随便定义
250 2.1.0 aa@... Sender ok
rcpt to:a@ --定义接收者,这里是我本机的a用户
250 2.1.5 a@... Recipient ok
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 closing connection
Connection closed by foreign host.
yum install mutt
mutt --是一个在unix-like系统下小巧但强大的基于文本的一个能发送和阅读邮件
的工具(MUA)
--查看邮件方法二:
直接在root用户下使用mutt命令,可以看到root用户的收信箱
如果要看普通的邮件,就要先su - 普通用户名 切换到普通用户再使用mutt命令查
看
--发送邮件方法三:
[root@li ~]# mutt a@ --可以直接使用这样的命令发送给
a@
,会提示用户写内容,还有附件等功能
--发送邮件方法四:
[root@li ~]# cat /etc/ |sendmail -v a@
-------------------------
下面先把DNS的MX记录给配置好
[root@li mail]# vim
/var/named/chroot/var/named/data/
$TTL 86400
@ IN SOA . . (
2010051605
60
60
360
86400)
IN NS .
IN MX 0 . --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/ --DNS指向改为本机
[root@li mail]# nslookup --验证MX记录的方法
> set type=mx
>
Server: 10.1.1.35
Address: 10.1.1.35#53
mail exchanger = 0 . --看到这样的信息表示成功
最好把时间同步也配好
[root@li mail]# echo 'while :; do ntpdate 10.1.1.1> /dev/null 2>/dev/null; sleep
10; done'>> /etc/
--每十秒同步一次10.1.1.1,放到/etc/里,开机自动运行
把邮件客户端软件claws-mail拷过去装好
ls /share/soft/soft/mail_client/
tar xvf /share/soft/soft/mail_client/ -C /usr/src/
tar xvf /share/soft/soft/mail_client/ -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/
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl --把127.0.0.1
改为0.0.0.0,或者是把中间那一小段去掉
保存退出
m4 /etc/mail/ > /etc/mail/ --如果没有装m4.i386这个
包,就需要使用m4命令去生成配置文件,装了就不需要,重启sendmail
服务自动生成
/etc/init.d/sendmail restart
[root@li claws-mail-3.5.0]# netstat -ntl|grep 25
tcp 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.
Connected to (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 13:47:01
+0800
helo
250
.................
例二:用claws-mail收发邮件
用claws-mail 发送一封邮件给本机用户,能写,但点收信时会报连接到
:110失败
原因检验:
[root@li /]# nslookup --先查看DNS,能解析
Server: 10.1.1.35
Address: 10.1.1.35#53
Name:
Address: 10.1.1.35
netstat -ntl |grep 110 --再查看端口,发现没有110端口,表示pop3协议没有配置
所以要去配置dovecot服务
[root@li /]# vim /etc/
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/dovec
ot
[root@li /]# netstat -ntlup |grep 110
tcp 0 0 :::110 :::* LISTEN 21674/dovec
ot
然后就可以收邮件了
例三:使用支持短域名来发送邮件
[root@li /]# mail -s '222' a@ --使用短域名
222222
.
Cc:
[root@li /]# tail /var/mail/a --查看时看不到,表示不支持短域名
[root@li /]# tail /var/mail/root --可以看到扔到root的邮箱去了
配置方法:
[root@li /]# vim /etc/mail/local-host-names --写上短域名
--注意的是写的域名,最好是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@
/etc/init.d/sendmail reload
例五:邮件的虚拟账号,虚拟用户表格
[root@li /]# vim /etc/mail/virtusertable
a@ b@ --把b@的账号虚拟成
a@账号
@ c --所有发往域的邮件都会发到本地的c用户的
mailbox
/etc/init.d/sendmail reload
例五:邮件中继
保持上面的配置不变的情况下,用另一台电脑做测试
[root@dns ~]# telnet 10.1.1.35 25 --另一台电脑测试35这台服务器上的smtp协
议
Trying 10.1.
Connected to 10.1.1.35 (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 15:39:36
+0800
helo
250 Hello [10.1.1.218], pleased to meet you
mail from:sdfsa@
250 2.1.0 sdfsa@... Sender ok
rcpt to:sfsadfa@
550 5.7.1 sfsadfa@... Relaying denied. --可以看到中继拒绝
[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: REJECT --表示从来的邮件都拒绝
TO: discard --到的邮件丢弃
--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.
Connected to 10.1.1.35 (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 15:51:35
+0800
helo
250 Hello [10.1.1.218], pleased to meet you
mail from:sfsafa@
250 2.1.0 sfsafa@... Sender ok
rcpt to:sdfsadf@
250 2.1.5 sdfsadf@... Recipient ok --这次测试没有报relay deny的错
误
-------------------------------------------------------------------
使用smtp验证
yum install cyrus-sasl*
vim /etc/mail/ --把下面三行注释打开
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`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 25
Trying 10.1.
Connected to (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 16:42:54
+0800
ehlo --注意这里是ehlo 不是 helo
Hello [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.
Connected to (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 16:45:12
+0800
helo
250 Hello [10.1.1.35], pleased to meet you
mail from:fsfafa@
250 2.1.0 fsfafa@... Sender ok --这里没有要求验证
原因:是因为smtp验证默认只是在587端口,而不是25端口,所以你还是直接telnet
10.1.1.35 25 就避开了使用smtp验证
vim /etc/mail/
把下面这句
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.
Connected to (10.1.1.35).
Escape character is '^]'.
220 ESMTP Sendmail 8.13.8/8.13.8; Sat, 29 May 2010 16:55:58
+0800
helo
250 Hello [10.1.1.35], pleased to meet you
mail from:sfsafsa@
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@
250 2.1.0 sdfasfas@... Sender ok
rcpt to:b@
250 2.1.5 b@... 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 closing connection
Connection closed by foreign host.
cat /var/mail/b 是可以看到发送的邮件
---------------
用claws-mail来验证
点设置--目前账号的偏好设置--发送--把SMTP鉴权(SMTP AUTH)前面的勾
打上--鉴权方式选PLAIN--用户ID和密码写上本机的一个普通名和其密码就OK
再发送信件等都是经过了SMTP验证的