邮件服务(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 常用邮件客户端

  1. Webmail:通过浏览器访问的 Web 邮箱,如 www.126.com;
  2. 邮件客户端软件: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 参考

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 即可互相中继转发。

四、扩展功能

完整邮件服务器通常还包括:

  1. 邮件群发;
  2. 虚拟邮件域(一台服务器多域);
  3. Webmail(OpenWebmail、SquirrelMail、ExtMan 等);
  4. 用户由数据库或 LDAP 管理(非系统用户);
  5. 反垃圾邮件(DNS 反向、黑白名单、关键字评分);
  6. 邮件杀毒(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

访问地址:

最后修改:2026 年 09 月 20 日
如果觉得我的文章对你有用,请随意赞赏