在Linux系统中搭建邮件服务器通常会选择Postfix作为SMTP服务端处理邮件发送,Dovecot作为IMAP/POP3服务端处理邮件接收,两者搭配可以覆盖大多数基础邮件服务场景。

环境准备
首先需要准备一台运行主流Linux发行版的服务器,本文以Ubuntu 22.04为例,确保服务器有固定的公网IP或者内网固定IP,同时提前配置好对应的域名解析,将MX记录指向当前服务器IP。
执行以下命令更新系统软件源并安装基础依赖:
# 更新软件源 sudo apt update # 安装基础工具 sudo apt install -y wget curl
安装Postfix配置SMTP服务
Postfix是常用的开源SMTP服务器软件,负责处理发件请求和邮件中转。
安装Postfix
执行安装命令,安装过程中会弹出配置界面,选择Internet Site类型,然后输入你的域名作为系统邮件名称:
sudo apt install -y postfix
修改Postfix主配置
编辑Postfix的主配置文件/etc/postfix/main.cf,修改以下核心参数:
# 设置邮件服务器域名 myhostname = mail.ipipp.com # 设置域名 mydomain = ipipp.com # 允许接收邮件的域名 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 监听所有网卡 inet_interfaces = all # 允许转发的网络段,这里允许本地内网段转发 mynetworks = 127.0.0.0/8, 192.168.0.0/24 # 使用Dovecot进行SASL认证 smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes # 禁止匿名发件 smtpd_sasl_security_options = noanonymous # 要求发件认证 smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
修改完成后重启Postfix服务:
sudo systemctl restart postfix sudo systemctl enable postfix
安装Dovecot配置IMAP服务
Dovecot负责提供IMAP/POP3服务,让用户可以通过邮件客户端收取服务器上的邮件。
安装Dovecot
执行以下命令安装Dovecot核心组件和IMAP模块:
sudo apt install -y dovecot-core dovecot-imapd dovecot-pop3d
修改Dovecot配置
首先编辑/etc/dovecot/conf.d/10-mail.conf,设置邮件存储路径:
# 邮件存储目录,用户邮件存放在家目录的Maildir目录 mail_location = maildir:~/Maildir
然后编辑/etc/dovecot/conf.d/10-auth.conf,开启明文认证(测试环境使用,生产环境建议配合SSL):
# 禁用明文认证限制 disable_plaintext_auth = no # 使用系统用户认证 auth_mechanisms = plain login
接着编辑/etc/dovecot/conf.d/10-master.conf,配置和Postfix的认证对接:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
最后重启Dovecot服务:
sudo systemctl restart dovecot sudo systemctl enable dovecot
创建测试用户并验证
创建一个系统用户用于邮件测试:
# 创建用户testuser,同时创建家目录 sudo useradd -m testuser # 设置用户密码 sudo passwd testuser
使用邮件客户端配置账户,收件服务器选择IMAP,地址填mail.ipipp.com,端口143,发件服务器选择SMTP,地址同样填mail.ipipp.com,端口25,使用刚才创建的testuser账户和密码登录,尝试发送和接收邮件验证服务是否正常。
常见问题排查
- 如果发件失败,检查Postfix日志
/var/log/mail.log,确认是否有认证失败或者网络限制问题 - 如果收件失败,检查Dovecot日志
/var/log/mail.log,确认邮件存储目录权限是否正确 - 如果外部邮件无法送达,检查域名的MX解析是否生效,防火墙是否开放了25、143等对应端口