我尝试使用 Postfix 服务器进行管理,我的目标是:
当 1 名特殊用户 ([电子邮件保护]) 尝试发送邮件,它将使用路由(使用中继服务器是可以的),但我不明白如何向中继服务器发送身份验证以获得发送邮件的授权。我在 main.cf 文件中执行此操作:
relay_domains =
$mydestination
proxy:mysql:/etc/postfix/mysql/relay_domains.cf
relay_recipient_maps =
mysql:/etc/postfix/mysql/relay_recipient_maps.cf
第一点没问题:我看到邮件使用我的 mysql 表中指定的中继来发送邮件。第二点有问题:我认为用户/密码未发送到中继,因此我的邮件被拒绝。文件 /etc/postfix/mysql/relay_recipient_maps.cf 内容为:
hosts = 127.0.0.1:3306
user = BDD_USER
password = BDD_PASS
dbname = BDD_DBNAME
query = SELECT authentification FROM domain WHERE domain='%s' LIMIT 1
在 MySQL 中,“身份验证”字段包含用户:密码,用于纯文本中继身份验证
祝您有个愉快的一天!
答案1
为了在 Postfix 中与中继服务器进行身份验证,您需要smtp_sasl_auth_enable
在main.cf
文件中配置参数。
- 打开
main.cf
Postfix 的配置文件。 - 添加或修改以下参数:
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
- 创建一个
sasl_passwd
文件并指定中继服务器的主机名或 IP 地址以及身份验证凭据:
relay.example.com username:password
- 从文件生成哈希映射文件
sasl_passwd
:
sudo postmap /etc/postfix/sasl_passwd
- 为文件设置正确的权限
sasl_passwd.db
:
sudo chown root:root /etc/postfix/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl_passwd.db
- 重新启动 postfix:
sudo service postfix restart
通过配置smtp_sasl_auth_enable
参数并在文件中提供身份验证详细信息sasl_passwd
,Postfix 将在发送电子邮件时使用这些凭据与中继服务器进行身份验证。