学习一个服务的流程;
1、此服务器的概述:名字,功能,特点,端口号 2、安装 3、配置文件的位置 4、服务启动关闭脚本,查看端口 5、此服务的使用方法 6、修改配置文件,实战举例 7、服务的安全 8、排错(从下到上,从内到外) 9、模拟错误<对服务的原理要精通>
背景介绍;
RHEL5默认,地位已失 地位失守原因: 第一个重要的缺点是它的安全性较差,这是因为当其作者Eric Allman最初开始写作这个软件的时候,Internet的用户还很少,因而安全性并不没有得到大家的重视。 由于邮件系统需要处理的是外部发送来的各种各样的信息,甚至包含一些恶意数据,然而sendmail在大多数系统中都是以root身份运行,一旦出现问题,就会对系统安全造成严重影响。在这种情况下,要防止出现安全问题,仅仅依赖程序本身是不可取的,应该从系统结构出发,使程序拥有的特殊权限限制到最小。 第二个,使用Sendmail还会遇到的另一个问题是它的设置相当复杂,对于使用缺省设置来收发电子邮件,问题并不存在。当管理员打算进行一些特殊设置,以便利用Sendmail提供的复杂邮件处理能力时,就不得不面对复杂的宏和正则表达式。
Qmail可以替代Sendmail Qmail,为了解决sendmail的安全问题,整个系统结构需要重新设计。基本的原则是将系统划分为不同的模块,有负责接收外部邮件的,有管理缓冲目录中待发送的邮件队列的,有将邮件发送到远程服务器或本地用户的。Qmail就是按照这个原则进行的设计,它由多个不同功能的小程序组成,只有必要的程序才是setuid程序(即以root用户权限执行),这样就减少了安全隐患,并且由于这些程序都比较简单一些,因此就可以达到较高的安全性。Qmail已经许多年没有更新了,用户已经习惯于通过第三方的插件及补丁来使qmail增加新的功能.
postfix 介绍:
另一种替换软件:Postfix 可以替代sendmail
Postfix的性能也非常不错,甚至在Qmail作者自己进行的测试中也表明,Postfix的性能和Qmail基本相当。postfix在性能上大约比sendmail快三倍
官网:http://www.postfix.org/ logo
作者:Wietse Venema 作者介绍:http://www.porcupine.org/wietse/
前面我们说的都是邮件发送服务器 接下来我们看看邮件接收服务器
Dovecot: 邮件接收服务器: Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持 Linux/Unix 系统。 POP / IMAP4 是 MUA 从邮件服务器中读取邮件时使用的协议。 POP3 是从邮件服务器中下载邮件存起来,IMAP 则是将邮件留在服务器端直接对邮件进行管理、操作。比POP3更先进。 由 Timo Sirainen 开发,最初发布于 2002年7月。作者将安全性考虑在第一,所以 Dovecot 在安全性方面比较出众。 IMAP4是TCP/IP协议族中的一员,现在的版本是“IMAP第四版第一次修订版”。 一个完整的邮件服务器由以下内容构成: postfix(作为发送邮件服务器)+dovecot(作为接收邮件服务器)+mysql(作为数据库)
25 端口:SMTP协议。 发送邮件
是本地邮件传输协议,与SMTP类似,但不支持邮件队列(queue),主要应用于非广域网的邮件网关。
110端口:POP3协议
是本地邮件传输协议,与SMTP类似,但不支持邮件队列(queue),主要应用于非广域网的邮件网关。
143:IMAP
IMAP: (InternetMail Access Protocol Internet邮件访问协议) 。IMAP是斯坦福大学在1986年开发的一种邮件获取协议。它的主要作用是邮件客户端(例如Outlook)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。 当前的权威定义是RFC3501。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。两者之前的区别 POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。 而IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。
邮件功能组件 MUA:邮件用户代理(Mail User Agent) 收邮件 MTA:邮件传输代理(Mail Transfer Agent) 发邮件 rhel5默认采用sendmail做为MTA,rhel6则采用postfix MDA:邮件递送代理(Mail Delivery Agent)
工作原理图
搭建postfx服务端
[root@post-test ~]# hostname
[root@postfix-server ~]# alternatives --config mta 按 Enter 保留当前选项[+],或者键入选项编号: # 如果有多个输入数字进行选择
[root@postfix-server ~] alternatives --display mta #查看所有详细的版本 [root@postfix-server ~] #yuminstall postfix –y # postfix服务的主程序包,服务器端必须安装该 [root@postfix-server ~] #yuminstall dovecot –y #接收邮件软件包。 安装在服务端用于测试收邮件。 安装客端用于收邮件。 [root@postfix-server ~] #vim /etc/postfix/main.cf
[root@postfix-server ~] # vim/var/log/maillog
[root@postfix-server ~]#service postfix start
[root@postfix-server ~]#lsof -i :25 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODENAME master 2336 root 12u IPv4 13216 0t0 TCP localhost:smtp (LISTEN) master 2336 root 13u IPv6 13218 0t0 TCP localhost:smtp (LISTEN)
服务的使用方法: linux: 发送: [root@postfix-server ~]# mail -s 'Postfix'1684067131@qq.com < /etc/passwd -s:指定邮件主题名 接收: windows: 通过浏览器访问或 foxmail
配置postfix邮件服务器,实现邮件发送功能。实现给邮箱:1684067131@qq.com 发送邮件。1)修改主机名和对应关系: [root@postfix-server~]# hostname xuegod63.cn
[root@postfix-server ~]# cat /etc/hosts [root@postfix-server ~]#vim /etc/postfix/main.cf
queue_directory= /var/spool/postfix #队列目录,也是运行的根目录 mydomain =postfix-server#指定邮件域,接收用来识别的 myhostname= postfix-server#发送邮件的主机名 mynetworks= 192.168.1.0/24, 127.0.0.0/8 #指定允许使用的ip地址段 myorigin =$mydomain #发信地址,此设置显示为@postfix-server inet_interfaces= all #对外提供MTA服务设置为监听所有网卡,默认只监听本地 #inet_interfaces= localhost #注释掉,这个是只监听本地的 mydestination= $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks_style= subnet #允许转发的来源网段,可选subnet子网,class网段,host本机 local_recipient_maps = //209行,把前面的注释拿掉 relay_domains= $mydestination #允许转发的目标域 alias_maps= hash:/etc/aliases #对某个用户发,文件中的用户都可以收到邮件 alias_database= hash:/etc/aliases smtpd_banner= $myhostname ESMTP "postfix mail server" #自定服务器信息
[root@postfix-server ~]#servicepostfix restart
1)测试给123456789@qq.com发送邮件:
[root@xuegod63 ~]# mail -s 'Postfix'123456789@qq.com< /etc/postfix/main.cf 由于要经过很多域名解析发送中转,所以会有些延迟 -s:邮件主题 # [root@postfix-server ~] #mail HeirloomMail version 12.4 7/29/08. Type ? forhelp. "/var/spool/mail/root":12 messages 1 new 2 unread >N 12 Mail Delivery System Sun Nov 29 21:14 752/29445 "UndeliveredMail Returned to S" &
没有发送出去,经验证是网络ip的问题 http://www.anti-spam.org.cn/ 反垃圾邮件联盟,看看你的ip是否被拉入黑名单 用别的地方的一台机器,一样的配置文件,可以发送
[root@postfix~]# mail -s 'Postfix' 123567890@qq.com </etc/postfix/main.cf
需要为邮件服务器添加DNS解析 虽然不加DNS解析也能把邮件发出去,但会被大多数邮件服务器当作垃圾邮件。根据我们的实际经验,需要添加三条DNS解析记录:A记录、MX记录、TXT记录比如域名cnblogs.info,对应的DNS记录如下
例2:配置postfix给一个人发送邮件多个人可以收到需求: 我们先创建2个用户,创建一个组HA,当我们给HA送邮件的时候,alice和bob两个用户可以收到邮件 别名功能
1)添加测试用户: [root@postfix-server ~]# groupadd HA [root@postfxi-server ~]# useradd alice [root@postfix-server ~]# echo "123456" | passwd --stdinalice [root@postfix-server ~]# useradd bob [root@postfix-server~]# echo "123456" | passwd --stdin bob [root@postfix-server~]# vim /etc/aliases HA: alice,bob [root@postfix-server ~]# service postfixrestart 3)发送测试邮件: [root@postfix-server ~]# mail HA Subject: Test This is a Test-mail lllloo kllll lll EOT 按ctrl-D结束输入 4) 切换用户查看:
[root@postfix-server ~]# su - alice [alice@postfix-server ~]$ mail 配置dovecot服务器,实现发邮件和接收邮件
[root@postfix-server ~]# vim /etc/dovecot/dovecot.conf protocols = imap pop3 lmtp #启用,lmtp被淘汰的地步。可能不被支持,不用就删掉 login_trusted_networks = 192.168.1.0/24 //指定允许登录的网段地址 或login_trusted_networks = 0.0.0.0 设置为四个零,允许所有网络 [root@postfix-server ~]# grep -v '^#' /etc/dovecot/dovecot.conf |grep-v '^$' |grep -v '#' protocols= imap pop3 lmtp login_trusted_networks= 192.168.1.0/24 dict { } !includeconf.d/*.conf
[root@postfix-server~]# vim/etc/dovecot/conf.d/10-mail.conf mail_location = mbox:~/mail:INBOX=/var/mail/%u #指定邮件的位置
[root@postfix ~]# service dovecot restart
[root@postfix ~]# vim /etc/skel/.bash_profile if[ ! -d ~/mail/.imap/INBOX ] ; then mkdir -p ~/mail/.imap/INBOX fi [root@postfix-server ~]# source .bash_profile 5)测试: 先创建用户 [root@postfix-server~]# useradd alice [root@postfix-server~]# echo alice:123456 |chpasswd [root@postfix-server~]# useradd bob [root@postfix ~]# echobob:123456 |chpasswd
测试发邮件 测试发邮件: mail发邮件三种用法 1:以文件中的内容为邮件内容发信 [root@postfix-server ~]# su - alice [alice@postfix-server ~]$ mail -s'Posfix1' bob@postfix-server < /etc/hosts 2:手动输入内容作为发送内容 [alice@postfix-server ~]$ echo"2222222222" | mail -s 'Postfix2' bob@postfix-server 3:手动输入一串作为发送内容 [alice@postfix-server~]$ mail -s 'Postfix3' bob@postfix-server yyyuuu hhhhhkkk jjjnnnn EOT 通过mail命令查看邮件: [root@postfix-server~]# su - bob [bob@postfix-serve~]$ mail & #mail命令的提示符为 & & 1 # 输入数字1,查看第一封邮件 & h #查看邮件列表 & l #查看所有支持的命令 & d 2 #删除第二个邮件; d 2-4 删除第2-4的邮件 & ? #查看 所有用法。 (责任编辑:IT) |