You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sendmail配置问题:本地用户名自动加域名及主机名伪装失效

解决Sendmail自动添加正确域名的伪装配置问题

看起来你找对了核心方向——用Sendmail的伪装(masquerading)功能修正本地用户的邮件地址,但大概率是配置细节没做全导致没生效。我来帮你梳理正确的配置步骤和排查点:

1. 完善sendmail.mc的伪装规则

打开/etc/mail/sendmail.mc,确保添加了完整的伪装配置,推荐设置如下:

# 指定要伪装成的目标域名
MASQUERADE_AS(`domain.tld')dnl

# 列出需要被替换掉的本地/主机域名(必须包含你的`hostname.domain.tld`)
MASQUERADE_DOMAIN(`hostname.domain.tld')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl
MASQUERADE_DOMAIN(`localhost')dnl

# 让邮件信封地址(不仅仅是邮件头部显示的地址)也应用伪装
FEATURE(masquerade_envelope)dnl

# 对所有本地用户(包括root等系统用户)启用伪装
FEATURE(allmasquerade)dnl

注意:这些配置要放在MAILER(smtp')dnl`及其他MAILER定义的前面,否则Sendmail不会加载这些规则。

2. 手动重建Sendmail配置文件

虽然你提到sendmail.cf已自动重建,但手动执行生成操作能避免缓存或自动生成不彻底的问题:

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

3. 重启Sendmail服务确保配置生效

根据你的系统类型选择对应的重启命令:

# Systemd系统(如CentOS 7+/Ubuntu 16.04+)
systemctl restart sendmail

# SysVinit系统(如CentOS 6)
service sendmail restart

4. 验证配置是否生效

你可以用Sendmail的测试模式直接检查地址转换结果:

sendmail -bt

进入测试环境后,输入以下命令查看本地用户的地址解析:

/tryflags HS
/try username

如果配置正确,输出中的Canonicalize步骤会把username@hostname.domain.tld转换成username@domain.tld。

之后再发送测试邮件,查看/var/log/mail.log,确认邮件地址已被正确替换。

如果还是有问题,可以检查/etc/mail/local-host-names文件,确保hostname.domain.tld被列在其中——Sendmail只会对识别为本地域名的地址应用伪装规则。

内容的提问来源于stack exchange,提问作者Sethos II

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:28:34