电子邮件:
特点:1.快捷 2.安全 3.多样性 术语: 协议: 发送 smtp tcp 25 smtps 接受 pop3 tcp 110 和imap4 (tcp143) pop3s imaps 服务器: 发送 : MAT (邮件传输代理) windows 电子邮件服务(2003 2000) 2008 (只有发送,无接受) exchange server(微软) 软件:lotus notes mdaemon linux :sendmail(本身不支持身份验证,不防垃圾邮件) postfix(更安全些) qmail(荷兰数学家 基于算法) 接受: MAA() dovecot 协议 pop3 imap pop3s imaps 客户端: MUA web client outlook express foxmail evolution mutt Mda 投递员 postfix (mailproc) sendmail默认带mda 电子邮件传输流程: 每创建一个账户就会创建一个邮箱,该邮箱除了本用户可以访问,mail组也能访问,系统默认情况下是安装了sendmail的 在文件/etc/syslog.conf中我们可以得知Mial服务所产生的所有日志会在/var/log/maillog中显示 我们通过tail -f 可以动态监控该服务所有的mail记录,便于找到错误 /etc/syslog.conf 日志配置档 [root@localhost mail]# ll total 16 -rw------- 1 root root 10351 Aug 6 09:07 root -rw-rw---- 1 rpc mail 0 Aug 5 02:15 rpc -rw-rw---- 1 user1 mail 0 Aug 6 09:07 user1 user1的邮箱为空 信件查看之后会放在家目录下的mbox中 [root@localhost mail]# mail user1 测试向user1 发一封邮件 Subject: hello 标题 1111111 内容 . 一“.”结束 Cc: 退出 [root@localhost mail]# ll total 20 -rw------- 1 root root 10351 Aug 6 09:07 root -rw-rw---- 1 rpc mail 0 Aug 5 02:15 rpc -rw-rw---- 1 user1 mail 651 Aug 6 09:08 user1 再次查看发现该用户已经接受到邮件了 当我们使用user1登录时: [root@localhost ~]# su - user1 切换到user1 [user1@localhost ~]$ mail 查看家目录下的邮箱 Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/user1": 1 message 1 new 可以看到提示有一封新邮件 >N 1 root@localhost.local Sat Aug 6 09:08 16/651 "hello" 编号1的邮件 & 1 选取编号进行查看 Message 1: From root@localhost.localdomain Sat Aug 6 09:08:36 2011 Date: Sat, 6 Aug 2011 09:08:36 +0800 From: root来解决它吧 此时我们知道从服务器内部是能往外发得(刚接受到的那封就是) 在/etc/mail目录下的access文件是一个中继文件 [root@mail ~]# vim /etc/mail/access Connect:localhost.localdomain RELAY Connect:localhost RELAY Connect:localhost RELAY Connect:127.0.0.1 RELAY Connect:192.168.20. RELAY 如果客户端处于不同网段,一定要为其添加中继 /etc/mail/local-host-names 记录本地域名,必须知道自己负责的域 [root@mail ~]# vim /etc/mail/local-host-names mail.bj.com 添加本地服务器名 bj.com 添加本地域名 做完之后重启sendmail ,然后在客户端便可以向服务器本地发了 (2)我们再用同样的方法配置上海的mail服务器 sendmail-cf-8.13.8-8.el5.i386.rpm 生成易配置的配置文件跟脚本 sendmail-devel-8.13.8-8.el5.i386.rpm 开发包 sendmail-doc-8.13.8-8.el5.i386.rpm 文档包 m4-1.4.5-3.el5.1.i386.rpm 转换工具包 我们需要把这几个包一个个的安装 首先搭建dns服务器: 3.安装包:bind-9.3.6-4.P1.el5_4.2.i386.rpm bind-chroot-9.3.6-4.P1.el5_4.2.i386.rpm caching-nameserver-9.3.6-4.P1.el5_4.2.i386.rpm 4.生成主配置文件: [root@localhost Server]# cd /var/named/chroot/etc/ [root@localhost etc]# cp -p named.caching-nameserver.conf named.conf [root@localhost etc]# vim named.conf options { listen-on port 53 { any; }; 更改监听范围 listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; 改为any }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view localhost_resolver { match-clients { any; }; 改为any match-destinations { any; }; 改为any recursion yes; include "/etc/named.rfc1912.zones"; }; 2.声明区域:[root@localhost etc]# vim named.rfc1912.zones zone "sh.com" IN { type master; file "sh.com.db"; allow-update { none; }; }; 3.创建数据库: [root@localhost named]# pwd /var/named/chroot/var/named [root@localhost named]# cp -p localhost.zone bj.com.db [root@localhost named]# vim bj.com.db $TTL 86400 @ IN SOA ns.sh.com. root ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS ns.sh.com. ns IN A 192.168.20.88 mail IN A 192.168.20.88 pop3 IN CNAME mail smtp IN CNAME mail @ IN MX 10 mail 创建邮件交换器,便于别人向本地区发信 5.启动dns service named start,并改变dns指向 [root@localhost named]# vim /etc/resolv.conf nameserver 192.168.20.88 到此dns服务器便搭配好了 我们这里要做的是mail服务器,我们需要把主机名称也改了 [root@localhost named]# vim /etc/hosts 127.0.0.1 mail.sh.com localhost.localdomain localhost 添加 ::1 localhost6.localdomain6 localhost6 [root@localhost named]# vim /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=yes HOSTNAME=mail.sh.com 修改名称 修改完成之后重启系统 默认sendmail是安装的,这里我们设置允许telnet连接服务器的其它地址的25号口进行收发邮件,所以我们需要在主配置文件中更改 [root@mail ~]# vim /etc/mail/sendmail.mc DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl 然后重启sendmail就可以了service sendmail restart [root@mail ~]# netstat -tupln |grep 25 tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 3739/sendmail: acce [root@mail ~]# telnet 192.168.20.88 25 再次连接 Trying 192.168.20.88... Connected to 192.168.20.88 (192.168.20.88). Escape character is '^]'. 220 mail.bj.com ESMTP Sendmail 8.13.8/8.13.8; Sat, 6 Aug 2011 11:19:35 +0800 quit 221 2.0.0 mail.bj.com closing connection Connection closed by foreign host. 除了telnet外,我们还可以用windows自带的outlook 发送 首先我们先安装服务器端的pop3 [root@mail Server]# yum install dovecot Divecot安装后默认情况下开启了pop3,pop3s,imap ,imaps [root@mail Server]# netstat -tupln |grep dov tcp 0 0 :::993 :::* LISTEN 3863/dovecot (imaps) tcp 0 0 :::995 :::* LISTEN 3863/dovecot (pops) tcp 0 0 :::110 :::* LISTEN 3293/dovecot tcp 0 0 :::143 :::* LISTEN 3863/dovecot [root@mail Server]# vim /etc/dovecot.conf 编译它的主配置文件 protocols = pop3 我们这里可以设置只使用pop3 然后启动dovecot -------service dovecot start 在/etc/mail目录下的access文件是一个中继文件 [root@mail ~]# vim /etc/mail/access Connect:localhost.localdomain RELAY Connect:localhost RELAY Connect:localhost RELAY Connect:127.0.0.1 RELAY Connect:192.168.20. RELAY 如果客户端处于不同网段,一定要为其添加中继 /etc/mail/local-host-names 记录本地域名,必须知道自己负责的域 [root@mail ~]# vim /etc/mail/local-host-names mail.sh.com 添加本地服务器名 sh.com 添加本地域名 做完之后重启sendmail ,然后在客户端便可以向服务器本地发了 (3)基本的对发 北京地区用户要给上海用户大发邮件,首先会发给自己的服务器,然后自己的服务器再转发给上海的邮件服务器,再由该服务器下发到对端,该过程中服务器间的对发需要用到域名解析,所以需要在本地dns上做转发 在北京跟上海的dns上分别做转发:编译主配置文件 [root@mail ~]# vim /var/named/chroot/etc/named.conf options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; forwarders { 192.168.20.88; }; 装发到对端的服务器地址 allow-query { any; }; allow-query-cache { any; }; }; 做完转发后,就位其他区域转发做中继 分别在北京跟上海为对端的服务区域做转发中继 [user1@mail ~]$ vim /etc/mail/access Connect:localhost.localdomain RELAY Connect:localhost RELAY Connect:127.0.0.1 RELAY Connect:192.168.20. RELAY bj.com OK sh.com RELAY 重启sendmail后便可以做转发了,实现北京和上海的对发了,但是速度很慢 (4)但是这样不能避免垃圾软件,我们为了避免垃圾邮件,每一个邮件服务器根据对方的mx记录找到对方的地址,再根据地址解析一下名称是否是对方的那个名称 所以我们需要在双方dns上做反向dns 1.为反向查找做区域声明:(两边都做) [root@mail user1]# vim /var/named/chroot/etc/named.rfc1912.zones zone "20.168.192.in-addr.arpa" IN { type master; file "192.168.20.db"; allow-update { none; }; }; 2.产生反向查找的数据库文件(两边都做) [root@mail user1]# cd /var/named/chroot/var/named/ [root@mail named]# cp -p named.local 192.168.20.db [root@mail named]# vim 192.168.20.db $TTL 86400 @ IN SOA localhost. root.localhost. ( “本机就是该反向dns的服务”器 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS localhost. 99 IN PTR mail.bj.com. 添加服务器记录 88 IN PTR mail.sh.com. 添加对端服务器记录 做完之后执行rndc reload 便可以解析了 此时再用客户端相互对发便可以很快的发送过去了 我们可以替管理员做邮件的别名,这个别名账号数不需要创建,只是一个外号而已,这个外号可以对应好几个账号,那么所发得邮件就会发到它对应的每一个 这个别名在/etc/aliases中配置,由于m4会将aliases的改变更新到aliases.db中,系统真正使用的是aliases.db数据库 编译aliases文件,为用户添加别名记录 [root@mail etc]# vim /etc/aliases master: user5,user6 (用户间可以用逗号隔开) 做完之后重启sendmail,那么往该别名发送的邮件都会被user5与user6收到
【内容导航】 | |
第1页:流程 | 第2页:mail的安全 |
第3页:postfix | 第4页:Web方式的邮件系统 |