Akemi

Postfix搭建send-only邮件服务器

2025/04/08

Send-only邮件服务器是仅负责发送邮件而不处理接收邮件的服务器,适用于需要对外发送通知、警报等场景。

send-only功能

  1. 仅发送邮件
    • 不接收外部邮件,无需配置POP3/IMAP服务。
    • 不处理发往自身域名的邮件(如没有MX记录)。
  2. 简化配置
    • 无需设置邮件存储、用户邮箱或复杂的DNS MX记录。
    • 通常关闭25端口的外部监听(仅允许出站连接)。
  3. 安全性优化
    • 避免开放接收端口,减少垃圾邮件攻击风险。
    • 需配置SMTP认证(如SASL)和TLS加密,防止滥用。
  4. 轻量级
    • 不占用资源处理邮件队列存储(如自动转发到外部服务)。

说白了,适用于大量服务器监控,配合cronjob脚本进行巡检,出现问题就用mailx发送邮件到中央的邮件服务器

这是一种比较传统的方案,用Zabbix也可以做

mailx与MTA

mailx仅负责生成邮件内容,必须依赖 Send-only 服务器(如 Postfix)才能完成实际发送。若未配置 MTA,mailx 无法单独工作。

linux底层默认使用sendmail作为MTA,但配置复杂,并且逐渐被淘汰,所以使用postfix来代替

组件 角色 关键作用
Send-only 邮件服务器 邮件传输代理(MTA,如 Postfix) 负责与远程邮件服务器通信,实际传输邮件到目标收件人。
mailx/s-nail 邮件用户代理(MUA) 提供命令行接口,用于撰写邮件内容并调用 MTA(如 Postfix)发送。

配置postfix

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 因为系统版本比较新我这里使用s-nail
yum -y install postfix s-nail

# 限制 Postfix 仅监听本地回环接口(不接收外部邮件)
postconf -e "inet_interfaces = loopback-only"
postconf -e "mynetworks = 127.0.0.0/8 [::1]/128"

# 拒绝本地邮件
postconf -e "mydestination ="

# 设置邮件域名标识(发件人域名)
postconf -e "myorigin = $(hostname)"
postconf -e "myhostname = $(hostname)"

# 禁用 SMTP 身份验证(本地发信时无需认证)
postconf -e "smtpd_sasl_auth_enable = no"

# 设置中央邮件服务器
postconf -e "relayhost = [mail.wangsheng.com]"

systemctl enable postfix --now
systemctl restart postfix

echo "Test mail" | s-nail -s "Test Subject" wangsheng@wangsheng.com

CATALOG
  1. 1. send-only功能
  2. 2. mailx与MTA
  3. 3. 配置postfix