在 CentOS 上安装与配置消息相关组件
常见需求与对应方案
- 若只是想在系统上用命令行发信,安装并使用 mailx 即可,配合本机或外部 SMTP 发信。
- 若需要本机具备邮件收发能力(MTA + IMAP/POP3),安装 Postfix(发信/收信)与 Dovecot(IMAP/POP3 存取)。
- 若要在应用间进行异步消息队列通信,安装 RabbitMQ(AMQP 消息队列)。
方案一 命令行发信 mailx 最简安装
- 安装工具
- CentOS 7:sudo yum install -y mailx
- CentOS 8/Stream:sudo dnf install -y mailx
- 可选:安装并启动本机 MTA(Postfix)以便“本机直接投递”
- sudo yum install -y postfix && sudo systemctl enable --now postfix
- 配置外部 SMTP(推荐,例如使用公司或公共邮箱的 SMTP)
- 编辑 /etc/mail.rc,在末尾追加(按你的邮箱服务商填写):
- set from=你的邮箱@域名.com
- set smtp=smtp.域名.com:587
- set smtp-auth-user=你的邮箱@域名.com
- set smtp-auth-password=你的授权码或密码
- set smtp-auth=login
- set ssl-verify=ignore(如测试阶段证书报错可临时忽略)
- 发送测试
- echo “邮件正文” | mail -s “测试主题” 收件人@域名.com
- 说明
- 多数云厂商默认封禁 25 端口,发信请使用 587(Submission,STARTTLS)或 465(SMTPS)。如使用外部 SMTP,本机 MTA 仅作本地投递代理即可。
方案二 搭建本机邮件服务器 Postfix + Dovecot
- 安装组件
- sudo yum install -y postfix dovecot
- 配置 Postfix(/etc/postfix/main.cf,按需修改)
- myhostname = mail.你的域名
- mydomain = 你的域名
- myorigin = $mydomain
- inet_interfaces = all
- mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
- mynetworks = 127.0.0.0/8
- home_mailbox = Maildir/
- 配置 Dovecot(/etc/dovecot/dovecot.conf 或 /etc/dovecot/conf.d/10-mail.conf)
- protocols = imap pop3
- mail_location = maildir:~/Maildir
- 启动与开机自启
- sudo systemctl enable --now postfix dovecot
- 防火墙(如使用 firewalld)
- 提交端口:sudo firewall-cmd --permanent --add-port=587/tcp
- IMAP:sudo firewall-cmd --permanent --add-port=143/tcp
- POP3:sudo firewall-cmd --permanent --add-port=110/tcp
- 重载:sudo firewall-cmd --reload
- 测试
- 本机发信:echo “body” | mail -s “subject” 收件人@域名.com
- 外部收信:使用邮件客户端通过 IMAP/POP3 连接服务器(端口 143/110)。
方案三 安装消息队列 RabbitMQ
- 安装 Erlang 仓库(示例为 RabbitMQ 3.8 系列,适配 CentOS 7/8 x86_64)
- sudo tee /etc/yum.repos.d/rabbitmq.repo <<EOF
[rabbitmq-server]
name=RabbitMQ repository for CentOS/$basearch
baseurl=http://rpm.rabbitmq.com/yum/rabbitmq-server/v3.8/x86_64/
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
EOF
- 安装与启动
- sudo yum install -y rabbitmq-server
- sudo systemctl enable --now rabbitmq-server
- 防火墙
- 业务端口:sudo firewall-cmd --permanent --add-port=5672/tcp
- 管理界面:sudo firewall-cmd --permanent --add-port=15672/tcp
- 重载:sudo firewall-cmd --reload
- 访问管理界面
- 浏览器打开:http://服务器IP:15672
- 默认账号/密码:guest/guest(生产环境请立即修改或禁用默认账户)。
常见问题与排错要点
- 端口与连通性
- 云服务器常封 25 端口;发信优先 587/465;IMAP/POP3 用 143/110;RabbitMQ 用 5672/15672。
- 认证与加密
- 使用外部 SMTP 时,密码通常为邮箱的“授权码”;启用 STARTTLS/SSL 以避免明文传输。
- 本机 MTA 与外部 SMTP 的选择
- 仅脚本告警建议直接走外部 SMTP;需要系统级邮件队列与本地投递再启用 Postfix。
- 日志排查
- Postfix:/var/log/maillog;Dovecot:/var/log/dovecot;RabbitMQ:journalctl -u rabbitmq-server。