邮件服务(Postfix/Dovecot/Zimbra)
适用环境:RHEL 5/6(postfix 2.x、dovecot 2.x),扩展部分含 Zimbra(ZCS 8.6)。 内容覆盖:邮件系统基本概念(MUA/MTA/MDA、SMTP/POP3/IMAP 及 SSL 端口)、开源邮件服务器对比、postfix + dovecot 安装与本地发信、DNS 中 MX 记录配置、postfix 主配置 main.cf、dovecot 收信配置、客户端测试、两域互发原理、邮件系统扩展功能(群发、虚拟域、Webmail、反垃圾/杀毒),并附基于 Zimbra 的一体化邮件系统搭建步骤。
一、邮件服务基础知识
1.1 常用邮件客户端
- Webmail:通过浏览器访问的 Web 邮箱,如
www.126.com; - 邮件客户端软件:Outlook、Foxmail、Thunderbird 等,需在客户端配置。
1.2 开源邮件服务器(MTA)
| 软件 | 结构 |
|---|---|
| sendmail | 单体式 |
| postfix | 模块化 |
| qmail | 模块化 |
1.3 角色概念
| 缩写 | 全称 | 作用 |
|---|---|---|
| MUA | Mail User Agent | 邮件用户代理,客户端收发邮件 |
| MTA | Mail Transfer Agent | 邮件传输代理,服务端邮局,负责接收和转发 |
| MDA | Mail Delivery Agent | 邮件投递代理,将邮件投递到本地账号 |
1.4 协议与端口
发信:
| 协议 | 端口 |
|---|---|
| SMTP | TCP 25 |
| SMTPS(SMTP over SSL/TLS) | TCP 465 |
收信:
| 协议 | 端口 | 特点 |
|---|---|---|
| POP3 | TCP 110 | 读取或下载邮件 |
| POP3S | TCP 995 | |
| IMAP | TCP 143 | 先下邮件头,可选择性下载 |
| IMAPS | TCP 993 |
1.5 邮件传递流程
MUA(发件人) -> MTA(发件邮局) -> MTA(收件邮局) -> MDA(本地投递) -> MUA(收件人)
示例:zhangsan@126.com 发给 lisi@sina.com:
SMTP(中继)
MTA 网易 -------------> MTA 新浪
| |
zhangsan@126.com lisi@sina.com
1.6 postfix 参考
- 参考:http://wiki.ubuntu.org.cn/Postfix_基本设置指南
- 参考书籍:《postfix 权威指南》(本机发信原理参见第 30 页图 3-2、第 35 页图 3-4)。
RHEL 6 默认 MTA 为 postfix;RHEL 5 可用 system-switch-mail 切换,RHEL 6 已无此包。
二、postfix 本地使用
2.1 安装与启动
yum install postfix dovecot -y
/etc/init.d/sendmail stop # 若 sendmail 在运行
/etc/init.d/postfix start # 注意不要删除 /etc/hosts 中 127.0.0.1 的两行
验证:
netstat -ntlup | grep :25
# tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 13999/master
默认只监听 127.0.0.1:25,只能本机给本地用户发信。
/etc/init.d/dovecot restart
netstat -ntlup | grep :110
2.2 postfix 配置文件
| 文件 | 作用 |
|---|---|
/etc/postfix/main.cf |
主配置 |
/etc/postfix/master.cf |
子程序运行参数,通常无需修改 |
/etc/postfix/access |
中继访问控制 |
/etc/aliases |
邮箱别名(配合 postalias/newaliases) |
/etc/postfix/virtual |
虚拟别名域 |
2.3 发送测试邮件
方法一:mail 命令
mail -s 'hello' root
正文内容
. # 单独点号结束
cat /var/spool/mail/root
cat /var/mail/root
将文件作为正文:
mail -s 'hello2' root < /etc/fstab
方法二:sendmail 命令
cat /etc/rc.local | sendmail -v root
报警脚本示例:
printf "***** test ******\n\n姓名:张 三\n性别:男\n年龄:25\n职业:IT\n" | mail -s "haha" root
方法三:telnet 直接与 25 端口交互
yum install telnet -y
telnet 127.0.0.1 25
helo qianyun.com
mail from:abc@qq.com
rcpt to:root@qianyun.com
data
test mail from qq.com
.
quit
方法四:mutt(文本 MUA)
yum install mutt -y
mutt root@qianyun.com
方法五:其他邮件客户端或 Webmail。
Linux 给外网邮箱发信:需能访问外网,直接
mail -s "xxx" user@126.com。
三、postfix + dovecot + DNS 完整收发
3.1 拓扑
linux 客户端 DNS + postfix + dovecot windows 客户端
10.0.0.61 ------------- 10.0.0.2 ------------- 10.0.0.62
zhangsan@cluster.com lisi@cluster.com
前期准备:主机名、时间同步、关闭 iptables/SELinux、配好 yum。
3.2 DNS 与 MX 记录
设置主机名:
hostname mail.abc.com
vim /etc/hosts
# 10.0.0.2 mail.abc.com
vim /etc/sysconfig/network
# HOSTNAME=mail.abc.com
安装 BIND(详见 DNS 章节),在 /etc/named.rfc1912.zones 添加:
zone "cluster.com" IN {
type master;
file "data/master.cluster.com.zone";
};
区域文件 /var/named/data/master.cluster.com.zone:
$TTL 3600
@ IN SOA SDFSADFA. fsdfa. (
1234567890
30
30
30
3600 )
IN NS 10.0.0.2.
IN MX 0 10.0.0.2. ; 邮件交换记录,数字越小优先级越高(0-20)
mail IN A 10.0.0.2
/etc/init.d/named restart
验证:
nslookup mail.cluster.com
nslookup
> set type=mx
> cluster.com
# cluster.com mail exchanger = 0 10.0.0.2.
3.3 postfix 配置
编辑 /etc/postfix/main.cf:
myhostname = mail.abc.com
mydomain = cluster.com
myorigin = $mydomain
inet_interfaces = all # 注释掉 inet_interfaces = localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 172.16.2.0/24, 127.0.0.0/8
/etc/init.d/postfix restart
netstat -ntlup | grep :25
# 0.0.0.0:25 LISTEN master
创建用户:
useradd zhangsan
useradd lisi
echo 123 | passwd --stdin zhangsan
echo 123 | passwd --stdin lisi
3.4 dovecot 配置
vim /etc/dovecot/dovecot.conf
# 20 行
protocols = imap pop3 lmtp
# 38 行
login_trusted_networks = 10.0.0.0/24
vim /etc/dovecot/conf.d/10-mail.conf
# 25 行
mail_location = mbox:~/mail:INBOX=/var/mail/%u
/etc/init.d/dovecot restart
netstat -ntlup | grep :110
若收信报错 Couldn't open INBOX: Internal error occurred,检查并创建 INBOX 目录:
ll -d /home/zhangsan/mail/.imap/INBOX/
# drwxrwx--- 2 zhangsan zhangsan 4096 ...
ll -d /home/lisi/mail/.imap/INBOX/
# drwxrwx--- 2 lisi lisi 4096 ...
3.5 两域互发
- 将两边 DNS 互相转发,使两端都能解析对方域的邮件服务器 IP;
- 两边 postfix 即可互相中继转发。
四、扩展功能
完整邮件服务器通常还包括:
- 邮件群发;
- 虚拟邮件域(一台服务器多域);
- Webmail(OpenWebmail、SquirrelMail、ExtMan 等);
- 用户由数据库或 LDAP 管理(非系统用户);
- 反垃圾邮件(DNS 反向、黑白名单、关键字评分);
- 邮件杀毒(ClamAV 等)。
实际选型建议:大公司可自建;小公司可购买商业邮件系统;初创公司可使用腾讯企业邮、网易企业邮等;若要自建一体化系统,可选 ExtMail、Zimbra 等整合版本。
五、基于 Zimbra 的邮件系统搭建
5.1 搭建 DNS
设置主机名:
hostname qianyun.com
vim /etc/sysconfig/network
# HOSTNAME=qianyun.com
vim /etc/hosts
# 10.0.0.99 mail.qianyun.com qianyun.com
关闭防火墙和 SELinux:
iptables -F
setenforce 0
安装并配置 BIND:
yum install bind* -y
/etc/named.conf:
options {
forwarders { 114.114.114.114; 8.8.8.8; };
};
zone "qianyun.com" IN {
type master;
file "data/master.qianyun.com.zone";
};
zone "0.0.10.in-addr.arpa" IN {
type master;
file "data/master.10.0.0.arpa";
};
named-checkconf /etc/named.conf
正向区域文件 /var/named/data/master.qianyun.com.zone:
$TTL 86400
@ IN SOA qy.com. root.qy.com. (
20150922
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS 10.0.0.99.
IN MX 0 mail.qianyun.com.
mail IN A 10.0.0.99
反向区域文件 /var/named/data/master.10.0.0.arpa:
$TTL 86400
@ IN SOA qy.com. root.qy.com. (
20150922
3H
15M
1W
1D )
IN NS 10.0.0.99.
IN MX 0 mail.qianyun.com.
99 IN PTR mail.qianyun.com
检查并启动:
named-checkzone qianyun.com /var/named/data/master.qianyun.com.zone
named-checkzone qianyun.com /var/named/data/master.10.0.0.arpa
/etc/init.d/named restart
chkconfig named on
客户端 DNS 指向:
vim /etc/resolv.conf
# nameserver 10.0.0.99
解析测试:
nslookup
> set type=mx
> qianyun.com
# qianyun.com mail exchanger = 0 mail.qianyun.com.
> set type=ptr
> 10.0.0.99
5.2 安装 Zimbra
停止 postfix:
/etc/init.d/postfix stop
chkconfig postfix off
安装依赖:
yum install sysstat compat-libstdc++* nc file -y
解压安装:
tar xf /share/soft/zcs-8.6.0_GA_1153.RHEL6_64.20141215151155.tgz -C /usr/src/
cd /usr/src/
mv zcs-8.6.0_GA_1153.RHEL6_64.20141215151155/ zcs
cd zcs
./install.sh --platform-override
安装过程交互要点:
- 同意许可协议:
y; - 选择安装组件(默认全装,
zimbra-dnscache可选n); - 确认修改系统:
y; - 修改域名:
y,将mail.qianyun.com改为qianyun.com; - 进入主菜单选择
6) zimbra-store,设置 admin 密码(如123456); - 选择
a应用配置,保存配置文件; - 选择不通知 Zimbra:
no; - 安装完成后按任意键退出。
Zimbra 安装时会自动创建 zimbra 用户。
5.3 启动与验证
su - zimbra
zmcontrol status # 查看服务状态
zmcontrol restart # 启动/重启 ZCS
exit
访问地址:
- 管理员后台:https://mail.qianyun.com:7071(或 https://10.0.0.99:7071),用户名
admin,密码安装时设置; - Web 客户端:https://mail.qianyun.com:8443。
此处评论已关闭