linux sendmail配置详解.docx
- 文档编号:6695943
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:11
- 大小:20.31KB
linux sendmail配置详解.docx
《linux sendmail配置详解.docx》由会员分享,可在线阅读,更多相关《linux sendmail配置详解.docx(11页珍藏版)》请在冰豆网上搜索。
linuxsendmail配置详解
sendmail
MUA(mailuseragent 邮件用户代理),用于用户端发送邮件或者阅读邮件 linux有mutt这个工具
MTA(mailtranferagent邮件传输代理),相当于一个邮局,server端的软件,主要的功能有,接收MUA发来的邮件和把邮件发送给下一个MTA,可以说是一个邮件路由(mailrouter),server端的软件就属于MTA,现在开源的有sendmail,postfix,qmail等
MDA(maildevileryagent邮件投递代理),主要是将MTA所接受的邮件,依照邮件的目的地将此邮件放到本机账号下或者是给下一个MTA,一般就是指mail这样的命令
邮件的协议:
发信:
SMTP(simplemailtranferprotocol简单邮件传输协议) 端口号TCP的25端口,在发信时,MUA会主动连接MTA的port25,然后经由SMTP协议发送出去,SMTP分为接受SMTP和发送SMTP,它不管两端主机的配置或者系统等,只要两边SMTP协议OK就可以发送邮件
收信:
POP (postofficeprotocol 邮局协议),来连接到MTA,以读取或者下载邮件,现在常用的版本是POP3,端口为110
IMAP (internetmessageaccessprotocol网络报文件协议),能在下载邮件前先下载邮件头信息,以可以让用户选择性下载端口143
软件包
yuminstallsendmail*
yuminstalldovecot
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/sendmailrestart
[root@li~]#netstat-ntl|grep25 --看到默认是只监听了127.0.0.1的回环地址
tcp 0 0127.0.0.1:
25 0.0.0.0:
* LISTEN
--发送邮件方法一:
[root@li~]#mail-s"mail"root@--用此命令发送邮件-s后接邮件主题
1111 --写邮件内容
. --“."点号表示结束
Cc:
--直接回车退出
[root@li~]#mail-s'yyyy'a@
--查看邮件方法一:
cat/var/mail/root
cat/var/spool/mail/root--查看这两个一样的这样是可以查看到刚才发送的邮件,因为一个是自己发送给自己用的127.0.0.1这个回环地址,这种情况不需要DNS的MX支持
--发送邮件方法二:
[root@li~]#telnet127.0.0.125--对smtp协议进行验证
Trying127.0.0.1...
Connectedtolocalhost.localdomain(127.0.0.1).
Escapecharacteris'^]'.
220ESMTPSendmail8.13.8/8.13.8;Sat,29May201011:
30:
09+0800
helo --定义来访者,可以用help去查看支持哪些命令集,用help+命令来看单个命令如何使用
250Hellolocalhost.localdomain[127.0.0.1],pleasedtomeetyou
mailfrom:
aa@--定义一个发送者,这里可以随便定义
2502.1.0aa@...Senderok
rcptto:
a@--定义接收者,这里是我本机的a用户
2502.1.5a@...Recipientok
data --表示下面要写邮件内容
354Entermail,endwith"."onalinebyitself
4444444444 --随便写上你要发送的邮件的内容
. --"."点号表示结束
2502.0.0o4T3U9l1026581Messageacceptedfordelivery
quit --quit退出,有时候一次退不出,就多敲几次quit
2212.0.0closingconnection
Connectionclosedbyforeignhost.
yuminstallmutt
mutt --是一个在unix-like系统下小巧但强大的基于文本的一个能发送和阅读邮件的工具(MUA)
--查看邮件方法二:
直接在root用户下使用mutt命令,可以看到root用户的收信箱
如果要看普通的邮件,就要先su-普通用户名切换到普通用户再使用mutt命令查看
--发送邮件方法三:
[root@li~]#mutta@--可以直接使用这样的命令发送给a@
,会提示用户写内容,还有附件等功能
--发送邮件方法四:
[root@li~]#cat/etc/rc.local|sendmail-va@
-------------------------
下面先把DNS的MX记录给配置好
[root@limail]#vim/var/named/chroot/var/named/data/.zone
$TTL86400
@ 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/namedreload
vim/etc/resolv.conf--DNS指向改为本机
[root@limail]#nslookup --验证MX记录的方法
>settype=mx
>
Server:
10.1.1.35
Address:
10.1.1.35#53
mailexchanger=0.--看到这样的信息表示成功
最好把时间同步也配好
[root@limail]#echo'while:
;dontpdate10.1.1.1>/dev/null2>/dev/null;sleep10;done'>>/etc/rc.local
--每十秒同步一次10.1.1.1,放到/etc/rc.local里,开机自动运行
把邮件客户端软件claws-mail拷过去装好
ls/share/soft/soft/mail_client/
tarxvf/share/soft/soft/mail_client/claws-mail-3.5.0.tar.gz-C/usr/src/
tarxvf/share/soft/soft/mail_client/libetpan-0.57.tar.gz-C/usr/src/
cd/usr/src/libetpan-0.57/
./configure;make;makeinstall
cd/usr/src/claws-mail-3.5.0/
./configure;make;makeinstall
例一:
让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/sendmailrestart
[root@liclaws-mail-3.5.0]#netstat-ntl|grep25
tcp 0 00.0.0.0:
25 0.0.0.0:
* LISTEN
[root@liclaws-mail-3.5.0]#telnet10.1.1.3525--对本机的IP(非回环地址)做smtp协议的测试是可以做的,如果只监听127.0.0.1,就不能这样用IP测试
Trying10.1.1.35...
Connectedto(10.1.1.35).
Escapecharacteris'^]'.
220ESMTPSendmail8.13.8/8.13.8;Sat,29May201013:
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|grep110--再查看端口,发现没有110端口,表示pop3协议没有配置
所以要去配置dovecot服务
[root@li/]#vim/etc/dovecot.conf
protocols=imapimapspop3pop3s--在20行找到有一行注释,打开注释,或者写一行,表示支持pop3和imap协议
/etc/init.d/dovecot restart--重启服务后,就可以看到监听143和110端口打开了
[root@li/]#netstat-ntlup|grep143
tcp 0 0:
:
:
143 :
:
:
* LISTEN 21674/dovecot
[root@li/]#netstat-ntlup|grep110
tcp 0 0:
:
:
110 :
:
:
* LISTEN 21674/dovecot
然后就可以收邮件了
例三:
使用支持短域名来发送邮件
[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/sendmailreload
再用短域名发送并测试发现是可以成功的
例四:
邮件别名,邮件转发,邮件群发
[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/sendmailreload
例五:
邮件的虚拟账号,虚拟用户表格
[root@li/]#vim/etc/mail/virtusertable
a@ b@--把b@的账号虚拟成a@账号
@ c --所有发往域的邮件都会发到本地的c用户的mailbox
/etc/init.d/sendmailreload
例五:
邮件中继
保持上面的配置不变的情况下,用另一台电脑做测试
[root@dns~]#telnet10.1.1.3525--另一台电脑测试35这台服务器上的smtp协议
Trying10.1.1.35...
Connectedto10.1.1.35(10.1.1.35).
Escapecharacteris'^]'.
220ESMTPSendmail8.13.8/8.13.8;Sat,29May201015:
39:
36+0800
helo
250Hello[10.1.1.218],pleasedtomeetyou
mailfrom:
sdfsa@
2502.1.0sdfsa@...Senderok
rcptto:
sfsadfa@
5505.7.1sfsadfa@...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:
REJECT --表示从来的邮件都拒绝
TO:
discard--到的邮件丢弃
--reject和discard的区别,discard是直接丢弃,reject还要返回一个错误或者警告
我在这里加上了
Connect:
10.1.1 RELAY
/etc/init.d/sendmailreload
再用刚才的另一台电脑来测试(要是10.1.1.0网段,因为上面我只允许这个网段relay)
[root@dns~]#telnet10.1.1.3525
Trying10.1.1.35...
Connectedto10.1.1.35(10.1.1.35).
Escapecharacteris'^]'.
220ESMTPSendmail8.13.8/8.13.8;Sat,29May201015:
51:
35+0800
helodns.lu.con
250Hello[10.1.1.218],pleasedtomeetyou
mailfrom:
sfsafa@
2502.1.0sfsafa@...Senderok
rcptto:
sdfsadf@
2502.1.5sdfsadf@...Recipientok --这次测试没有报relaydeny的错误
-------------------------------------------------------------------
使用smtp验证
yuminstallcyrus-sasl*
vim/etc/mail/sendmail.mc --把下面三行注释打开
TRUST_AUTH_MECH(`EXTERNALDIGEST-MD5CRAM-MD5LOGINPLAIN')dnl
define(`confAUTH_MECHANISMS',`EXTERNALGSSAPIDIGEST-MD5CRAM-MD5LOGINPLAIN')dnl
DAEMON_OPTIONS(`Port=submission,Name=MSA,M=Ea')dnl
/etc/init.d/sendmailrestart
/etc/init.d/dovecotrestart
/etc/init.d/saslauthdrestart
[root@li/]#telnet10.1.1.3525
Trying10.1.1.35...
Connectedto(10.1.1.35).
Escapecharacteris'^]'.
220ESMTPSendmail8.13.8/8.13.8;Sat,29May201016:
42:
54+0800
ehlo --注意这里是ehlo不是helo
250-Hello[10.1.1.35],pleasedtomeetyou
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTHGSSAPIDIGEST-MD5CRAM-MD5LOGINPLAIN --看到这里有loginplain验证信息表示支持smtp验证
250-DELIVERBY
250HELP
验证:
[root@li/]#telnet10.1.1.3525
Trying10.1.1.35...
Connectedto(10.1.1.35).
Escapecharacteris'^]'.
220ESMTPSendmail8.13.8/8.13.8;Sat,29May201016:
45:
12+0800
helo
250Hello[10.1.1.35],pleasedtomeetyou
mailfrom:
fsfafa@
2502.1.0fsfafa@...Senderok --这里没有要求验证
原因:
是因为smtp验证默认只是在587端口,而不是25端口,所以你还是直接telnet10.1.1.3525就避开了使用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/sendmailrestart
[root@li/]#telnet10.1.1.352
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux sendmail配置详解 sendmail 配置 详解