Sendmail服务器搭建,Xinetd服务配置,尚观Day15
2009-11-06 17:16
417 查看
第一、Sendmail服务器的搭建 1、软件包: sendmail.i386 <---邮件服务器端 MTA sendmail-cf.i386 <---邮件服务器的配置文件 sendmail-devel.i386 <---邮件服务器端的开发包 sendmail-doc.i386 <---帮助文档 m4.i386 <---处理配置文件的工具 dovecot.i386 <---pop邮件服务器端 MDA procmail.i386 <---负责把邮件分发到不同的用户邮箱(用户的邮件文件/var/mail/username) 2、配置Sendmail之前的准备 实验的环境: sendmail服务器: 10.1.1.92 DNS服务器:10.1.1.67 a、设定好主机名字 hostname slave.upl.com vim /etc/hosts 10.1.1.92 salve.upl.com b、设定邮件服务器的/etc/resolv.conf vim /etc/resolv.conf nameserver 10.1.1.67 c、给DNS服务器添加MX记录 vim /var/named/chroot/var/named/data/master.upl.com.zone <---这是10.1.1.67 DNS服务器上的文件 IN MX 0 slave.upl.com. slave IN A 10.1.1.92 service named reload 验证是否生效: [root@mail ~]# nslookup > set type=mx > upl.com Server: 10.1.1.67 Address: 10.1.1.67#53 upl.com mail exchanger = 0 slave.upl.com. 《---成功了 d、同时时间,让sendmail服务器时间正确 [root@slave ~]# while : > do > ntpdate 10.1.1.1 > /dev/null 2>/dev/null > sleep 30 > done & 2、配置sendmail服务器 配置文件目录:/etc/mail access 《--访问控制文件 access.db local-host-names 《--给服务器绑定多个域名 sendmail.cf 《--sendmail运行时使用的主要配置文件 sendmail.mc 《--配置的主要文件 virtusertable 《--给服务器配置虚拟域名 virtusertable.db /etc/aliases 《--给用户邮件设定别名 /etc/aliases.db 例子1:运行最简单的本地邮件服务器 service sendmail restart [root@slave mail]# netstat -ntl | grep 25 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 使用:telnet 测试 [root@slave mail]# telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 slave.upl.com ESMTP Sendmail 8.13.8/8.13.8; Fri, 6 Nov 2009 10:18:45 +0800 helo slave.upl.com 250 slave.upl.com Hello localhost.localdomain [127.0.0.1], pleased to meet you mail from:admin@google.com 250 2.1.0 admin@google.com... Sender ok <---寄信人的地址,随便写 rcpt to:tom@slave.upl.com <--收件人的地址 250 2.1.5 tom@slave.upl.com... Recipient ok data <---输入邮件内容 354 Enter mail, end with "." on a line by itself Good moning! . <---结束内容输入 250 2.0.0 nA62IjUS003044 Message accepted for delivery quit 221 2.0.0 slave.upl.com closing connection Connection closed by foreign host. 发送邮件的命令还有: mail -s "Just for test" mary@slave.upl.com < /etc/fstab 查看邮件是否发送tom用户 cat /var/mail/tom 例子2:让服务器监听所有地址的25端口 1、修改配置文件 搜索Addr关键字,按照下面的修改设定: DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl 转换配置文件: m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 2、service sendmail restart 3、测试与验证 # netstat -ntl | grep 25 tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN # telnet 10.1.1.92 25 Trying 10.1.1.92... Connected to slave.upl.com (10.1.1.92). Escape character is '^]'. 220 slave.upl.com ESMTP Sendmail 8.13.8/8.13.8; Fri, 6 Nov 2009 10:33:31 +0800 例子3:实现支持短域名形式和绑定别的域名 1、 vim /etc/mail/local-host-names upl.com hot.com 2、重启并验证 service sendmail restart telnet 10.1.1.92 25 ...... rcpt to: bean@upl.com 250 2.1.5 bean@upl.com... Recipient ok ...... 例子4:邮件别名,支持群发,转发 1、/etc/aliases mygod: tom ---> 邮件发给 mygod@upl.com都会转发给 tom@upl.com it: tom,bean,mary 邮件发给 sales@upl.com 都会群发给 后面指定的用户 生成aliases.db文件: newaliases 2、重启服务器验证 service sendmail cat /etc/fstab | sendmail -v mygod@upl.com <---介绍另一种发送邮件的命令 cat /etc/fstab | sendmail -v it@upl.com 例子5: 支持发送外部邮件,也就是把邮件发送到外部的地址 在配置前,使用另一台机器测试验证: [root@mail ~]# telnet 10.1.1.92 25 Trying 10.1.1.92... Connected to station92.cluster.com (10.1.1.92). Escape character is '^]'. 220 slave.upl.com ESMTP Sendmail 8.13.8/8.13.8; Fri, 6 Nov 2009 11:41:25 +0800 helo slave.upl.com 250 slave.upl.com Hello station67.cluster.com [10.1.1.67], pleased to meet you mail from:tt@upl.com 250 2.1.0 tt@upl.com... Sender ok rcpt to:imtheone@vip.qq.com 550 5.7.1 imtheone@vip.qq.com... Relaying denied 《---中继拒绝 什么叫中继? 中继就是让你的邮件服务器能够把邮件发送到外面的网络 默认情况下,是拒绝其他登录过来的用户发送外部邮件 ,在上面的例子中,我是从10.1.1.67 登录到 10.1.1.92这台smtp服务器,只允许从 10.1.1.92 登录的用户才能发送外部邮件,因为从本地登录他认为是127.0.0.1登录的,那么到底哪个配置文件涉及到呢?---> /etc/mail/access 1、配置access vim /etc/access Connect:10.1.1 RELAY 《---允许这个网段的客户发送外部邮件 Connect:10.1.1.20 REJECT 《---拒绝10.1.1.20 Connect:10.1.2 REJECT Connect:10.1.2.20 OK TO:126.com REJECT 《--不允许发邮件到126.com FROM:qq.com REJECT <--发信人邮件地址不能是qq.com 10.1.1.99 REJECT 2、生成数据文件: makemap hash /etc/mail/access.db < /etc/mail/access service sendmail restart 3、测试: 使用10.1.1.67 再次测试 telnet 10.1.1.92 25 ..... mail from:gg@upl.com 250 2.1.0 gg@upl.com... Sender ok rcpt to:imtheone@vip.qq.com 250 2.1.5 imtheone@vip.qq.com... Recipient ok <---可以了,原来是拒绝的 ..... 例子6:实现SMTP验证 只要提供的正确的帐号和密码,就不再受到 /etc/mail/access.db规则影响 启动pop服务器: service dovecot restart chkconfig --level 35 dovecot on 1、修改配置文件 搜索MD5关键字,把下面两行注释去掉: TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 搜索submission,把注释去掉: DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 2、安装验证支持软件包 yum install cyrus-sasl* -y 3、重启涉及的服务 service sendmail restart service dovecot restart service saslauthd restart chkconfig --level 35 sendmail on chkconfig --level 35 saslauthd on chkconfig --level 35 dovecot on 4、验证是否支持SMTP用户验证功能 a、方式一: telnet 10.1.1.92 25 ehlo slave.upl.com 250-slave.upl.com Hello slave.upl.com [10.1.1.92], 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 《---出现这行关键字就说明支持SMTP验证 250-DELIVERBY 250 HELP b、方式二:使用foxmail等客户端工具测试 @@@@@@测试发现,依旧不需要使用SMTP验证都可以成功发送邮件 但也可以使用SMTP密码验证的形式发送邮件 问题出现在哪? 原因:由于stmp验证默认只是在587端口监听,而默认的25端口是不需要验证的,而我们使用的foxmail等MUA客户端工具发送邮件的时候都是使用25端口的,所以就避开了密码验证,为了解决这个问题,应该这样作: 1、修改配置文件: 把下面这行注释掉: dnl # DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl 把下面这行打开,并且把submission修改成25或者smtp DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl 修改为: DAEMON_OPTIONS(`Port=25, Name=MSA, M=Ea')dnl m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf service sendmail restart 2、验证: 使用 telnet测试验证功能: [root@dns mail_client]# telnet 10.1.1.92 25 Trying 10.1.1.92... Connected to station92.cluster.com (10.1.1.92). Escape character is '^]'. 220 slave.upl.com ESMTP Sendmail 8.13.8/8.13.8; Fri, 6 Nov 2009 14:38:12 +0800 helo sss 250 slave.upl.com Hello station20.cluster.com [10.1.1.20], pleased to meet you mail from:gg@baidu.com 530 5.7.0 Authentication required auth login 334 VXNlcm5hbWU6 dG9t 334 UGFzc3dvcmQ6 MTIz 235 2.0.0 OK Authenticated mail from:gg@baidu.com 250 2.1.0 gg@baidu.com... Sender ok rcpt to:bean@upl.com 250 2.1.5 bean@upl.com... Recipient ok data 354 Enter mail, end with "." on a line by itself sdfffffffffffffffffffffff . 250 2.0.0 nA66cCGx006337 Message accepted for delivery quit 另一种就是使用foxmail验证 @@@@@@@@现在又有一个问题,就是telnet 127.0.0.1 25 进行发送邮件的时候也需要验证了,这样在写监控脚本的时候需要发本地邮件到管理员的时候就会失败,怎么解决? 解决方法: DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl DAEMON_OPTIONS(`Port=25, Addr=10.1.1.92, Name=MSA, M=Ea')dnl 另外的工具查看接收的邮件: mutt -f pop://tom@upl.com 例子7: 邮件的虚拟帐号 1、vim local-host-names hot.com upl.com google.com 2、 vim /etc/mail/virtusertable 接收地址 转发到 tom@hot.com bean @google.com tom 《---左边的接受地址出现的域名必须在local-host-names出现 bean@upl.com l.t.b@126.com makemap hash virtusertable.db < virtusertable 3、测试 service sendmail restart 分别发送邮件到 tom@hot.com dfgfg@google.com bean@upl.com 看看邮件去哪了 别的一些用法 joe@upl.com error:nouser 550 No such user here jax@upl.com error:5.7.0:550 Address invalid ================================= 第二、xinetd (扩展的网络服务守护进程) 作用:增强访问控制的功能,增强的日志记录功能 涉及的配置文件: /etc/xinetd.conf <---全局配置 例子1:把vsftp托管给xinetd 1、编辑配置文件 service ftp { socket_type = stream protocol = tcp wait = no <---no ,xinetd把接受到请求转发给vsftp之后,时候还继续监听 user = root <---运行服务的时候,进程的身份 server = /usr/sbin/vsftpd <---服务器的进程路径 disable = no <--- no ,启用这个托管设定 } 2、修给vsftpd的本身的配置文件 vim /etc/vsftpd/vsftpd.conf listen=NO 3、重启服务并验证 service xinetd restart 验证 chkconfig --list vsftp: 启用 netstat -ntlp | grep 21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 6828/xinetd 例子1:把sshd托管给xinetd man xinetd.conf 1、 service ssh { socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/sshd server_args = -i disable = no <---启用这个托管配置 per_source = 1 <---每个IP 只能最多建立一个连接 cps = 100 2 <---每秒最多接受100请求,超过了就停止接受新请求2秒钟 flags = IPv4 <---ipv4的标志 only_from = 10.1.1.0/24 <---只允许这个网段访问 no_access = 10.1.1.67 <---不允他访问 instances = 3 <---最多打开的实例数量,一个实例对一个连接 access_times = 16:00-23:20 <---“营业时间” } 2、把原来的服务sshd停止,并重新启动xinetd service sshd stop service xinetd restart ============================================= 第三、Tcpwrapper <---tcp程序的保护外壳 client <--- Tcpwrapper ---[ xinetd ] ---> server 查询哪些服务支持tcpwrapper 配置: 例子1: /etc/hosts.allow vsftpd: 10.1.1.0/255.255.255.0 EXCEPT 10.1.1.67 --> (理解成 :10.1.1.1~10.1.1.66 ,10.1.1.68~10.1.1.254) /etc/hosts.deny vsftpd:all Tcpwrapper 首先读取hosts.allow文件,如果找到匹配的话就应用规则,如果找不到就继续找,最后找hosts.deny 如果都找不到的话,就默认允许连接 例子2:只禁止10.1.1.0/24网段的主机访问vsftpd,但10.1.1.20可以 /etc/hosts.allow /etc/hosts.deny vsftpd:10.1.1.0/255.255.255.0 EXCEPT 10.1.1.20 例子3:允许所有人访问,但不允许10.1.1.0/24访问,但又允许10.1.1.20 /etc/hosts.allow vsftpd:ALL EXCEPT 10.1.1.0/255.255.255.0 EXCEPT 10.1.1.20 etc/hosts.deny vsftpd:ALL 思考: 到底哪些程序支持Tcpwrapper保护呢? [root@slave ~]# which vsftpd /usr/sbin/vsftpd [root@slave ~]# ldd /usr/sbin/vsftpd | grep wrap libwrap.so.0 => /lib/libwrap.so.0 (0x00cc9000) 《--找到才说明它能受到tcpwraper保护 [root@slave ~]# which sshd /usr/sbin/sshd [root@slave ~]# ldd /usr/sbin/sshd | grep wrap libwrap.so.0 => /lib/libwrap.so.0 (0x007ff000) 例子4: vim /etc/hosts.deny sshd:10.1.1.67:spawn echo "`date`" %c %d >> /var/log/tcpwrapper.log 《---只要是10.1.1.67 登录就会拒绝,并且记录日志
相关文章推荐
- DNS服务器搭建及配置,尚观Day12
- Windows 网络服务架构系列课程详解(一) ----DHCP服务器的搭建与配置
- Windows 网络服务架构系列课程详解(一) ----DHCP服务器的搭建与配置
- [15] FTP服务搭建与配置
- Mosquitto搭建Android推送服务(四)Mosquitto服务器用户登录与权限配置
- 【服务器搭建环境配置】ftp服务 ubuntu
- samba服务器搭建,NTP ,HCP服务器搭建,尚观Day14
- 【服务器搭建环境配置】Linux上部署Nginx服务以及故障排除
- CA数字证书服务的配置、搭建安全的WEB服务器、安全的邮件服务器
- 为微信小程序搭建https服务,证书申请及配置。Apache服务器。重点描述request:fail ssl hand shake error 错误
- 搭建backup服务器rsyncdaemon服务模式之一rsync服务端配置
- linux服务___Linux下NFS服务器的搭建与配置
- 搭建backup服务器rsyncdaemon服务模式之二rsync客户端配置
- 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解
- 搭建rtmp直播流服务之1:使用nginx搭建rtmp直播流服务器(nginx-rtmp模块的安装以及rtmp直播流配置)