当前位置:首页 > 云服务器 > 正文

linux搭建smtp服务器

Li nux上搭建 SMTP服务器,推荐使用Postfix软件,通过安装配置实现邮件发送功能

准备工作

1 系统要求

  • 适用发行版:Ubuntu 20.04 LTS / CentOS 7+(以下示例基于Ubuntu)
  • 必要权限:root用户或具有sudo权限的账号
  • 开放端口:TCP 25(默认SMTP)、587(推荐用于加密传输)

2 软件选择

组件 作用 推荐版本
Postfix MTA核心服务 最新版
Dovecot SASL认证支持库 最新版
Mailutils 客户端工具集 最新版
libsasl2-modules SASL协议扩展 最新版

安装配置流程

1 基础环境搭建

# 更新软件源并安装依赖 sudo apt update && sudo apt install postfix dovecot-core mailutils libsasl2-modules -y

注意:若使用CentOS系统,请替换为yum install -y postfix dovecot mailx

2 Postfix主配置文件修改(/etc/postfix/main.cf)

参数项 原始值 修改建议值 说明
myhostname yourdomain.com FQDN域名解析必须生效
mydomain localdomain yourdomain.com 与myhostname保持一致
inet_interfaces all loopback-only 生产环境建议仅监听本地回环
relayhost [外部MTA地址] 如需转发邮件时设置
smtpd_sasl_type no cyrus 启用Dovecot提供的SASL认证
smtpd_sasl_auth_enable false true 开启SMTP身份验证功能
smtpd_tls_cert_file /etc/ssl/certs/yourdomain.crt SSL证书路径
smtpd_tls_key_file /etc/ssl/private/yourdomain.key SSL私钥路径

3 Dovecot SASL认证配置

编辑/etc/dovecot/conf.d/10-auth.conf:

linux搭建smtp服务器 第1张

创建密码文件并设置权限:

sudo touch /etc/postfix/sasl_passwd sudo chown postfix:postfix /etc/postfix/sasl_passwd sudo chmod 600 /etc/postfix/sasl_passwd

使用doveadm pw命令添加用户:

sudo doveadm pw -u <用户名> -p <加密密码>

提示:可通过openssl passwd -apr1生成符合要求的加密格式密码

4 TLS加密部署(可选但推荐)

申请免费Let’s Encrypt证书:

linux搭建smtp服务器 第2张

sudo snap install core; sudo snap refresh core sudo snap install --classic certbot sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com

自动续期配置:添加cron任务每月执行一次更新检查

服务管理与测试

1 启动顺序控制

# 按依赖关系依次重启服务 sudo systemctl restart dovecot sudo systemctl restart postfix

状态监控命令:

systemctl status postfix dovecot journalctl -u postfix --since "5 minutes ago"

2 客户端验证方法

测试类型 命令示例 预期结果
EHLO握手 openssl s_client -connect smtp.yourdomain.com:587 -starttls ehlo 返回250响应码
发件人认证 openssl s_client -connect smtp.yourdomain.com:587 -starttls auth login 输入账号密码后返回235成功
邮件发送测试 mailx -v -r sender@yourdomain.com recipient@otherdomain.com < message.txt 收件箱可见完整内容

3 常见错误排查表

现象 可能原因 解决方案
connection refused firewall阻塞端口 ufw allow 587/tcp
authentication failed sasl配置错误 检查dovecot日志/var/log/mail.log
relay access denied postfix未授权该IP段 修改/etc/postfix/client_access添加白名单
certificate expired SSL证书过期 重新申请并更新路径配置

安全加固建议

  1. 限制来源IP段:在/etc/postfix/client_access中定义允许发送邮件的网络范围 168.1.0/24 OK ::1 OK
  2. 启用SPF/DKIM签名:通过OpenDKIM插件增强反垃圾能力
  3. 禁用DEBUG模式:确保生产环境关闭调试输出(修改debug_peer_level=0)
  4. 定期审计日志:设置logrotate轮转策略防止日志过大

相关问题与解答

Q1:为什么配置完成后仍然无法通过外部客户端发送邮件?

A:请按以下步骤排查:①检查防火墙是否放行587端口(sudo ufw status);②确认DNS A记录和MX记录已正确指向服务器IP;③查看Postfix日志tail -f /var/log/mail.log是否有认证失败记录;④验证TLS证书是否过期(openssl x509 -in /etc/ssl/certs/yourdomain.crt -noout -date)。

Q2:如何实现多域名共享同一台SMTP服务器?

A:在Postfix配置中添加虚拟域映射:编辑/etc/postfix/virtual_alias_maps文件,格式为example.com@yourdomain.com example.com,然后运行postmap hash:/etc/postfix/virtual_alias_maps生成数据库,最后重启

linux搭建smtp服务器 第3张

0