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

[经验分享] LINUX-sendmail

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-25 13:10:47 | 显示全部楼层 |阅读模式
MAIL 邮件模型
MUA (message user agent)  邮件用户代理 泛指邮件客户端  常见的如SENDMAIL、QMAIL、POSTFIX、EXIM等;Windows的Exchange、imail等。
--从MTA取的信,或者通过POP,IMAP把信发到MTA上
MTA (message transfer agent)  邮件传输代理 就是发送服务器
--监视MUA的请求 ,找出对方的MTA,把信传到对方MTA服务器,或者把信收到邮件队列
MDA (message deliver agent)  转发代理 邮件的投递员 ---把信最终投递到具体的用户MAA 接收服务器---dovecot 相关协议:smtp:简单邮件传输协议(simple mail transport protocol),发邮件用的协议,明文传输,基于tcp服务的应用层应用的端口号:TCP 25基础使用方法:telnet 127.0.0.1 25 //如果连接成功,服务器会返回一个表示通信连接成功的220应答代码,如果telnet不到,就察看25端口有没有打开。
helo 127.0.0.1 //向服务器表识发件人的身份,成功会收到250应答代码,这一步可以省略。
mail from :abc@bj.com //指定发件人,成功就会返回250应答代码.
rcpt to :yyy@bj.com   //指定收件人地址,成功就会返回250应答代码.
data //发送data命令,准备开始传输邮件内容,成功会返回354应答代码,表示准备接收邮件内容,可以在下一行开始输入邮件内容。
it's test!
.     邮件内容写完后回车并输入.结束
quit 结束,退出。pop3和imap:收邮件用的协议 明文传输
应用的端口号pop3: TCP 110,imap:TCP 143lmtp:本地邮件传输协议
sendmail
是最重要的邮件传输代理程序。理解电子邮件的工作模式是非常重要的。一般情况下,我们把电子邮件程序分解成用户代理,传输代理和投递代理。 用户代理用来接受用户的指令,将用户的信件传送至信件传输代理,如:outlook express、foxmail等。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱,如:procmail。 与sendmail相关的软件包:sendmail  //sendmail服务器程序的安装包,默认已安装m4  //包括了配置Sendmail服务器的必要工具,默认已安装sendmail-cf   //包括了重新配置Sendmail服务器的必要配置文件sendmail-doc  s//endmail服务器说明文档 sendmail 中几个比较重要的文件:sendmail.cf  //主配置文件,但该文件配置难度很大,一般修改sendmail.mc 然后通过运行m4 sendmail.mc > sendmail.cf来重新生成local-host-names  //设置sendmail服务器提供邮件服务的域名。access  //设置中继的数据库配置文件/var/log/maillog  //日志文件
案例不同地方使用sendmail实现mail的收发 DSC0000.png

北京mail服务器配置:安装sendmail相关软件:[iyunv@server ~]# chkconfig --list |grep sendmail        sendmail 默认安装sendmail        0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭[iyunv@server ~]# service sendmail statussendmail (pid  3715) 正在运行...[iyunv@server ~]# netstat -tupln |grep sendmailtcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      3715/sendmail: ace[iyunv@server ~]# rpm -qa |grep sendmailsendmail-8.13.8-2.el5     已经安装[iyunv@server ~]# rpm -qa |grep m4m4-1.4.5-3.el5.1     已经安装 [iyunv@server ~]# mount /dev/cdrom /mnt/cdrommount: block device /dev/cdrom is write-protected, mounting read-only[iyunv@server ~]# cd /mnt/cdrom/Server[iyunv@server Server]# ll sendmail*-r--r--r-- 278 root root 646627 2007-01-18 sendmail-8.13.8-2.el5.i386.rpm-r--r--r-- 278 root root 318825 2007-01-18 sendmail-cf-8.13.8-2.el5.i386.rpm-r--r--r-- 327 root root 131258 2007-01-18 sendmail-devel-8.13.8-2.el5.i386.rpm-r--r--r-- 278 root root 668921 2007-01-18 sendmail-doc-8.13.8-2.el5.i386.rpm  [iyunv@server Server]# rpm -ivh sendmail-cf-8.13.8-2.el5.i386.rpm三个文件需要修改: [iyunv@server Server]# cd /etc/mail[iyunv@server mail]# vim sendmail.mc  配置监听

--默认是本机监听25号端口,需要更改才能使非本地用户使用sendmail发送邮件--Dnl # 是注视文字--Dnl 是打开可以使用的--末尾dnl 去除空格[iyunv@server mail]# service sendmail restart[iyunv@server mail]# vim access   中继文件

-- ok 无条件接受, relay 中继, reject是拒绝


[iyunv@server mail]# vim local-host-names   域名比对,表示本地域名



安装DNS[iyunv@server Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm[iyunv@server Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm[iyunv@server Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm [iyunv@server Server]# cd /var/named/chroot/etc[iyunv@server etc]# cp -p named.caching-nameserver.conf named.conf   拷贝模板文件[iyunv@server etc]# vim named.conf

[iyunv@server etc]# vim named.rfc1912.zones


为了避免垃圾邮件 服务器会反复的进行正向和反向的解析,这样会造成速度很慢 所以还需要设置反向解析


[iyunv@server etc]# cd /var/named/chroot/var/named[iyunv@server named]# cp -p localhost.zone bj.com.db   产生数据库[iyunv@server named]# vim bj.com.db

[iyunv@server named]# vim 192.168.101.db


[iyunv@server named]# chkconfig named on   设置开机启动[iyunv@server named]# service named start [iyunv@server named]# vim /etc/resolv.conf    在邮件服务器上做dns指向

[iyunv@server named]# hostname 查看自己的主机名server.li.com[iyunv@server named]# vim /etc/sysconfig/network   修改自己的主机名,改成dns可以解析的名字

[iyunv@server named]# vim /etc/hosts   修改原来hosts文件里留的信息


[iyunv@server named]# init 6  重启系统


安装接收服务器:[iyunv@server ~]# yum list all |grep dov    用yum安装,有很强的依赖性This system is not registered with RHN.RHN support will be disabled.dovecot.i386                              1.0.7-7.el5                rhel-server[iyunv@server ~]# yum install -y dovecot.i386[iyunv@server ~]# chkconfig dovecot on   设置开机自动启动[iyunv@server ~]# service dovecot start启动 Dovecot Imap                                        [确定][iyunv@server ~]# netstat -tupln |grep dovecottcp       0      0 :::993                      :::*                        LISTEN     5318/dovecot       tcp        0      0:::995                      :::*                        LISTEN     5318/dovecot       tcp       0      0 :::110                      :::*                        LISTEN     5318/dovecot       tcp       0      0 :::143                     :::*                        LISTEN      5318/[iyunv@server ~]# grep 995 /etc/services

[iyunv@server ~]# grep 993 /etc/services


[iyunv@server ~]# vim /etc/dovecot.conf    只用明文的110和143 两个端口




上海mail服务器配置:(基本同北京,只需将北京服务器配置克隆过来,做如下修改)
[iyunv@server Server]# cd /etc/mail
[iyunv@server mail]# vim access   中继文件

[iyunv@server Server]# vim /var/named/chroot/etc/name.conf

[iyunv@server Server]# vim /var/named/chroot/etc/name.rfc.zones


[iyunv@server etc]# cd /var/named/chroot/var/named
[iyunv@server named]# vim sh.com.db

[iyunv@server named]# vim /etc/resolv.conf     //dns指向

[iyunv@server named]# vim /etc/sysconfig/network

[iyunv@server named]# vim /etc/hosts

[iyunv@server named]# init 6  重启系统

测试:

本地sendmail:

异地sendmail:

sendmail安全(加密和认证)
邮件系统的安全性(SMTP使用25号端口,POP3使用110号端口,IMAP使用143号端口)基本的smtp协议没有验证用户身份的能力。虽然信封上的寄件人地址已经隐含了发信者的身份,然而,由于信封地址实在太容易假造,所以不能当成身份凭据。 为了判断客户端是否有权使用转发服务(relay),服务器端必须确认客户端(寄件人)是否当真是对方所自称的那个人。在不能以寄件人地址为身份证书的前 提下,smtp势必需要其他补充机制,才能验证客户端的身份。
smtps
1. 465端口  (smtps)  (使用SSL加密的邮件系统,其SMTPS使用465号端口,POP3S使用995号端口,IMAPS使用993号端口)2. smtp+ssl   (starttls)  实际上在25端口加密.STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接(TLS或SSL),而不是使用一个单独的加密通信端口。

# sendmail -d0.1 -bv  输出详细信息 显示版本,支持哪些加密认证 认证  sasl 简单认证安全层 点到点的机制。--减少垃圾邮件的攻击,避免任何一个用户都可以向外发信  应用:

搭建sendmail服务器,以及dns服务器和接收服务器:
安装sendmail相关软件:

[iyunv@server ~]# chkconfig --list |grep sendmail        sendmail 默认安装sendmail        0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭[iyunv@server ~]# service sendmail statussendmail (pid  3715) 正在运行...[iyunv@server ~]# netstat -tupln |grep sendmailtcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      3715/sendmail: ace[iyunv@server ~]# rpm -qa |grep sendmailsendmail-8.13.8-2.el5     已经安装[iyunv@server ~]# rpm -qa |grep m4m4-1.4.5-3.el5.1     已经安装 [iyunv@server ~]# mount /dev/cdrom /mnt/cdrommount: block device /dev/cdrom is write-protected, mounting read-only[iyunv@server ~]# cd /mnt/cdrom/Server[iyunv@server Server]# ll sendmail*-r--r--r-- 278 root root 646627 2007-01-18 sendmail-8.13.8-2.el5.i386.rpm-r--r--r-- 278 root root 318825 2007-01-18 sendmail-cf-8.13.8-2.el5.i386.rpm-r--r--r-- 327 root root 131258 2007-01-18 sendmail-devel-8.13.8-2.el5.i386.rpm-r--r--r-- 278 root root 668921 2007-01-18 sendmail-doc-8.13.8-2.el5.i386.rpm  [iyunv@server Server]# rpm -ivh sendmail-cf-8.13.8-2.el5.i386.rpm 三个文件需要修改: [iyunv@server Server]# cd /etc/mail[iyunv@server mail]# vim sendmail.mc  配置监听

[iyunv@server mail]# service sendmail restart[iyunv@server mail]# vim access   中继文件

[iyunv@server mail]# vim local-host-names   域名比对,表示本地域名

安装DNS[iyunv@server Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm[iyunv@server Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm[iyunv@server Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm [iyunv@server Server]# cd /var/named/chroot/etc[iyunv@server etc]# cp -p named.caching-nameserver.conf named.conf   拷贝模板文件[iyunv@server etc]# vim named.conf

[iyunv@server etc]# vim named.rfc1912.zones




[iyunv@server etc]# cd /var/named/chroot/var/named[iyunv@server named]# cp -p localhost.zone bj.com.db   产生数据库[iyunv@server named]# vim bj.com.db


  [iyunv@server named]# vim 192.168.101.db

[iyunv@server named]# chkconfig named on   设置开机启动[iyunv@server named]# service named start [iyunv@server named]# vim /etc/resolv.conf    在邮件服务器上做dns指向

[iyunv@server named]# vim /etc/sysconfig/network   修改自己的主机名,改成dns可以解析的名字

[iyunv@server named]# vim /etc/hosts   修改原来hosts文件里留的信息


[iyunv@server named]# init 6  重启系统


安装接收服务器:[iyunv@server ~]# yum list all |grep dov    用yum安装,有很强的依赖性This system is not registered with RHN.RHN support will be disabled.dovecot.i386                              1.0.7-7.el5                rhel-server[iyunv@server ~]# yum install -y dovecot.i386[iyunv@server ~]# chkconfig dovecot on   设置开机自动启动[iyunv@server ~]# service dovecot start STARTTLS 步骤: 建立CA[iyunv@mail ~]# cd /etc/pki[iyunv@mail pki]# vim tls/openssl.cnf

  
[iyunv@mail pki]# cd CA/[iyunv@mail CA]# mkdir crl certs newcerts  创建相关的目录[iyunv@mail CA]# touch index.txt serial[iyunv@mail CA]# echo "01" >serial  设置一个序列号[iyunv@mail CA]# openssl genrsa 1024 >private/cakey.pem   创建钥匙[iyunv@mail CA]# chmod 600 private/*   设置权限 只要管理员可以访问[iyunv@mail CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem -days 3650  产生证书-----Country Name (2 letter code) [GB]:CNState or Province Name (full name) [Berkshire]:BEIJINGLocality Name (eg, city) [Newbury]:BEIJINGOrganization Name (eg, company) [My Company Ltd]:SECCENTEROrganizational Unit Name (eg, section) []:TECCommon Name (eg, your name or your server's hostname) []:rootca.net.net
  
发送的加密:为sendmail颁发证书[iyunv@mail CA]# cd /etc/mail[iyunv@mail mail]# mkdir certs  创建一个目录[iyunv@mail mail]# cd certs[iyunv@mail certs]# openssl genrsa 1024 >sendmail.key     产生钥匙[iyunv@mail certs]# openssl req -new -key sendmail.key -out sendmail.csr    请求文件-----Country Name (2 letter code) [GB]:CNState or Province Name (full name) [Berkshire]:HENANLocality Name (eg, city) [Newbury]:ZHENGZHOUOrganization Name (eg, company) [My Company Ltd]:ZZDXOrganizational Unit Name (eg, section) []:TECCommon Name (eg, your name or your server's hostname) []:mail.bj.comEmail Address []: [iyunv@mail certs]# openssl ca -in sendmail.csr -out sendmail.cert   颁发证书[iyunv@mail certs]# cp /etc/pki/CA/cacert.pem ./   把机构的证书和服务器的证书放在一起[iyunv@mail certs]# chmod 600 *[iyunv@mail certs]# cd /etc/mail[iyunv@mail mail]# vim sendmail.mc
134行打开
  [iyunv@mail mail]# telnet 127.0.0.1 25   通过telnet查看 STARTTLS已经启动

  
接收的加密:为接收服务器创建证书[iyunv@mail mail]# mkdir -pv /etc/dovecot/certs  创建多级子目录[iyunv@mail mail]# cd /etc/dovecot/certs[iyunv@mail certs]# openssl genrsa 1024 >dovecot.key[iyunv@mail certs]# openssl req -new -key dovecot.key -out dovecot.csr-----Country Name (2 letter code) [GB]:CNState or Province Name (full name) [Berkshire]:HENANLocality Name (eg, city) [Newbury]:ZHENGZHOUOrganization Name (eg, company) [My Company Ltd]:ZZDXOrganizational Unit Name (eg, section) []:TECCommon Name (eg, your name or your server's hostname) []:pop3.bj.comEmail Address []: [iyunv@mail certs]# openssl ca -in dovecot.csr -out dovecot.cert[iyunv@mail certs]# chmod 600 *[iyunv@mail certs]# vim /etc/dovecot.conf

  
[iyunv@mail certs]# service dovecot restart[iyunv@mail certs]# netstat -tupln |grep dovecottcp        0      0 :::993                      :::*                        LISTEN      6438/dovecot       tcp        0      0 :::110                      :::*                        LISTEN      6438/dovecot       tcp        0      0 :::143                      :::*                        LISTEN      6438/dovecot         测试: 发送加密:[iyunv@mail Server]# tail -f /var/log/maillog
  
接收加密:(需要安装抓包工具)[iyunv@mail ~]# yum list all |grep wirThis system is not registered with RHN.RHN support will be disabled.wireless-tools.i386                       1:28-2.el5                 installed wireless-tools-devel.i386                 1:28-2.el5                 rhel-serverwireshark.i386                            1.0.8-1.el5_3.1            rhel-serverwireshark-gnome.i386                      1.0.8-1.el5_3.1            rhel-server[iyunv@mail ~]# yum install wireshark.i386

  
认证步骤:服务名称saslauthd,默认是没有启用的要测试是否启用了认证
[iyunv@mail mail]# cd /mnt/cdrom/Server[iyunv@mail Server]# rpm -qa |grep saslcyrus-sasl-lib-2.1.22-5.el5cyrus-sasl-2.1.22-5.el5      主包cyrus-sasl-devel-2.1.22-5.el5cyrus-sasl-plain-2.1.22-5.el5        包含验证方法 [iyunv@mail Server]# chkconfig --list |grep saslsaslauthd       0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭  验证的服务器程序 [iyunv@mail Server]# service saslauthd start启动 saslauthd:                                           [确定][iyunv@mail Server]# chkconfig saslauthd on [iyunv@mail Server]# vim /usr/lib/sasl2/Sendmail.conf在里面可以写出检测的方法比如添加mech_list:LOGIN PLAIN  不写也行,系统默认值 [iyunv@mail Server]# vim /etc/mail/sendmail.mc


  
  
[iyunv@mail Server]# service sendmail restart 测试: 编码账号:[iyunv@mail Server]# echo -n "user1" |openssl base64dXNlcjE=[iyunv@mail Server]# echo -n "123" |openssl base64MTIz [iyunv@mail Server]# telnet 127.0.0.1 25


  
  
  
  转自
  http://lulu1101.blog.iyunv.com/4455468/814303


运维网声明 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-143428-1-1.html 上篇帖子: linux 下关闭启动sendmail 服务 下篇帖子: Linux mail命令使用和sendmail配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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