电子邮件系统概述:

邮件系统角色
MUA(邮件用户代理)、MTA(邮件传输代理)、MDA(邮件分发代理 )
邮件应用协议
SMTP,简单邮件传输协议,TCP 25端口
POP3,第3版邮局协议,TCP 110端口
IMAP4,第4版因特网消息访问协议,TCP 143端口
图:


常用的邮件服务器软件:
商业邮件系统
Exchange:微软公司的重量级产品,与Windows系列软件产品相集成,协作性较好
Notes/Domino:IBM公司的商业电子邮件和办公协作软件产品,功能丰富、强大,提供跨平台支持
开源邮件系统
Sendmail:资格最古老,运行稳定,但安全性欠佳
Qmail:有更好的执行效率,配置、管理也很方便
Postfix:兼容Sendmail,采用模块化设计,在投递效率、稳定性、服务性能及安全性方面表现优秀


构建简单电子邮件系统:
Sendmail:提供邮件发送服务(SMTP)
Dovecot:提供邮件收取服务(POP3)
Outlook Express:用于收发信的客户端工具

案例环境:
IP地址:192.168.10.0/24
主机名: mail.unixsalon.com
邮件域:@unixsalon.com
邮件帐号:使用本地系统用户
使用dovecot提供收信服务
域名设置
需要在 unixsalon.com 域的DNS服务器中注册,设置相应的A记录和MX记录
@ IN MX 10 mail.unixsalon.com.
mail IN A 192.168.10.3


用户别名与邮件群组:
aliases 别名机制
一般使用 /etc/aliases 文件
aliases文件的记录格式
别名: 地址1, 地址2, 地址3, ……
执行newaliases命令,以更新别名设置
[root@localhost ~]# vi /etc/postfix/main.cf
……
alias_maps = hash:/etc/aliases
[root@mail ~]# vi /etc/aliases
……
student: zhangsan, natasha, mike, john
[root@mail ~]# newaliases
/etc/aliases: 78 aliases, longest 10 bytes, 802 bytes total


构建sendmail服务器:
建立邮件帐号:wendy、natasha
SMTP发信测试:telnet localhost 25

[root@mail ~]# telnet localhost 25
HELO localhost 宣告客户机地址
250 mail.unixsalon.com
MAIL FROM: wendy@unixsalon.com 告知发件人地址
250 2.1.0 Ok
RCPT TO: natasha@unixsalon.com 告知收件人地址
250 2.1.5 Ok
DATA 表明传送数据(信件)内容 354 End data with <CR><LF>.<CR><LF>
Subject: A Test Mail
HELLO!
This is a test mail!
. 信件最后一行以点号 . 表示结束
250 2.0.0 Ok: queued as 6F24D148440
QUIT
221 2.0.0 Bye
Connection closed by foreign host.


建立 dovecot.conf 配置文件:

[root@mail ~]# cp /etc/dovecot-example.conf /etc/dovecot.conf
[root@mail ~]# vi /etc/dovecot.conf
……
ssl_disable = yes 禁用SSL机制
……
protocols = pop3 imap 支持的邮局协议
……
disable_plaintext_auth = no 允许明文密码认证
……
mail_location = maildir:~/Maildir 邮件存储格式及位置


构建dovecot服务器:

启动dovecot服务
[root@mail ~]# service dovecot start
[root@mail ~]# netstat -anptl | grep dovecot
tcp 0 0 :::110 :::* LISTEN 8672/dovecot
tcp 0 0 :::143 :::* LISTEN 8672/dovecot

POP3收信测试:telnet localhost 110
[root@mail ~]# telnet localhost 110
Trying 127.0.0.1...
Connected to mail.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.
USER natasha
+OK
PASS 123456
+OK Logged in.
LIST
+OK 1 messages:
1 451
.
RETR 1
+OK 451 octets
Return-Path: <wendy@unixsalon.com>
X-Original-To: natasha@unixsalon.com
Delivered-To: natasha@unixsalon.com
Received: from mail.unixsalon.com (mail.unixsalon.com [127.0.0.1])
by mail.unixsalon.com (Postfix) with SMTP id 6F24D148440
……


添加Webmail邮件界面:
安装
yum -y install squirrelmail
调整 config.php 配置文件
[root@mail webmail]# cd /etc/squirrelmail
[root@mail webmail]# vi config.php
$squirrelmail_default_language = 'zh_CN'; 使用中文界面
$default_charset = 'zh_CN.UTF-8';
$domain = 'unixsalon.com'; 默认邮件域名
$smtpServerAddress = 'localhost';
$smtpPort = 25;
$imap_server_type = 'dovecot';
$imapPort = 143;
确认启动 httpd 服务程序
在浏览器中访问Webmail界面
http://mail.unixsalon.com/webmail


添加SMTP用户认证:
SMTP用户认证流程
结合Cyrus SASL软件来实现
Simple Authentication and Security Layer

1. 配置并启动saslauthd服务
建立配置文件:/usr/lib/sasl2/smtpd.conf
启动 saslauthd 服务
[root@mail ~]# cd /usr/lib/sasl2/
[root@mail sasl2]# vim /usr/lib/sasl2/Sendmail.conf
pwcheck_method: saslauthd 设置验证方式
[root@mail sasl2]# service saslauthd start
3. 测试带验证的SMTP发信功能
获得测试用帐号、密码的 BASE64 加密字串
通过 telnet 方式连接,并执行测试
[root@mail ~]# printf "wendy" | openssl base64
eGlhb3Fp 用户名加密字串
[root@mail ~]# printf "123456" | openssl base64
MTIzNDU2 密码加密字串
[root@localhost ~]# telnet mail.unixsalon.com 25
Trying 192.168.10.3...
Connected to 192.168.10.3 (192.168.10.3).
Escape character is '^]'.
220 mail.unixsalon.com ESMTP Postfix
EHLO localhost
……
250-AUTH PLAIN LOGIN
AUTH LOGIN 表明认证成功
334 VXNlcm5hbWU6
eGlhb3Fp
334 UGFzc3dvcmQ6
MTIzNDU2
235 2.0.0 Authentication successful
MAIL FROM: wendy@unixsalon.com
……