我正在尝试将配置sendmail配置为使用中继。我尝试了几个程序,但我不知道为什么它不起作用,因为其他服务使用相同的中继并且它可以工作。
下面是我正在使用的安装过程。
我可以做些什么来诊断发生了什么?有什么问题?
谢谢!
安装和配置
运行以下命令进行更新和安装...
yum -y update
yum -y install sendmail-cf
yum -y install m4
yum -y install cyrus-sasl-plain
创建用于存储身份验证文件的目录...
mkdir /etc/mail/authinfo
chmod 700 /etc/mail/authinfo
创建身份验证文件...
提示:该文件可以具有任何名称,例如“smtp-auth”。
read -r -d '' FILE_CONTENT << 'HEREDOC'
BEGIN
AuthInfo:smtp.my_domain.com.br "U:root" "I:my_user@my_domain.com.br" "P:my_password"
END
HEREDOC
echo -n "${FILE_CONTENT:6:-3}" > "/etc/mail/authinfo/smtp-auth"
创建上面创建的身份验证文件的哈希映射文件...
enter code here
makemap 哈希 /etc/mail/authinfo/smtp-auth < /etc/mail/authinfo/smtp-auth
使用 SMART_HOST 配置 Sendmail...
在“MAILER(smtp)dnl”行之前将以下配置行添加到“sendmail.mc”配置文件中...
vi /etc/mail/sendmail.mc
内容...
define(`SMART_HOST', `smtp.my_domain.com.br')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl
define(`confAUTH_OPTIONS', `A p')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo', `hash -o /etc/mail/authinfo/smtp-auth.db')dnl
MASQUERADE_AS(my_domain.com.br)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(my_domain.com.br)dnl
重新构建 sendmail 的配置...
make -C /etc/mail
启用并启动 sendmail 服务...
systemctl enable sendmail.service
systemctl restart sendmail.service
测试和输出
[root@localhost ~]# read -r -d '' EMAIL_CONTENT << 'HEREDOC'
> BEGIN
> From: my_user@my_domain.com.br
> To: recipient@recipient_domain.com
> Subject: Fail2ban test
>
> Fail2ban test
>
> END
> HEREDOC
[root@localhost ~]# echo -n "${EMAIL_CONTENT:6:-3}" | sendmail -Am -d60.5 -v recipient@recipient_domain.com
map_lookup(dequote, root, %0=root) => NOT FOUND (0)
map_lookup(host, recipient_app.com, %0=recipient_app.com) => recipient_app.com. (0)
map_lookup(mailertable, recipient_app.com, %0=recipient_app.com) => NOT FOUND (0)
map_lookup(mailertable, .com, %0=.com, %1=recipient_app, %2=recipient_app) => NOT FOUND (0)
map_lookup(mailertable, ., %0=., %1=recipient_app.com) => NOT FOUND (0)
recipient@recipient_domain.com... Connecting to smtp.my_domain.com.br port 587 via relay...
220 a2-smithers5.uhserver.com ESMTP
>>> EHLO localhost.localdomain
250-a2-smithers5.uhserver.com
250-PIPELINING
250-SIZE 41943040
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN LOGIN PLAIN
250-AUTH=LOGIN PLAIN LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
map_lookup(macro, {TLS_Name}, %0={TLS_Name}, %1=smtp.my_domain.com.br) => (0)
map_lookup(access, TLS_Srv:smtp.my_domain.com.br, %0=TLS_Srv:smtp.my_domain.com.br) => NOT FOUND (0)
map_lookup(access, TLS_Srv:my_domain.com.br, %0=TLS_Srv:my_domain.com.br) => NOT FOUND (0)
map_lookup(access, TLS_Srv:com.br, %0=TLS_Srv:com.br) => NOT FOUND (0)
map_lookup(access, TLS_Srv:br, %0=TLS_Srv:br) => NOT FOUND (0)
map_lookup(access, TLS_Srv:200.147.36.31, %0=TLS_Srv:200.147.36.31) => NOT FOUND (0)
map_lookup(access, TLS_Srv:200.147.36, %0=TLS_Srv:200.147.36) => NOT FOUND (0)
map_lookup(access, TLS_Srv:200.147, %0=TLS_Srv:200.147) => NOT FOUND (0)
map_lookup(access, TLS_Srv:200, %0=TLS_Srv:200) => NOT FOUND (0)
map_lookup(access, TLS_Srv:, %0=TLS_Srv:) => NOT FOUND (0)
map_lookup(authinfo, AuthInfo:smtp.my_domain.com.br, %0=AuthInfo:smtp.my_domain.com.br) => NOT FOUND (0)
map_lookup(authinfo, AuthInfo:200.147.36.31, %0=AuthInfo:200.147.36.31) => NOT FOUND (0)
map_lookup(authinfo, AuthInfo:, %0=AuthInfo:) => "U:my_user@my_domain.com.br" "I:my_user@my_domain.com.br" "P:brlight2012" "M:PLAIN" (0)
>>> AUTH PLAIN YWRtaW5AbGlnaHRiYXNlLmNvbS5icgBhZG1pbkBsaWdodGJhc2UuY29tLmJyAGJybGlnaHQyMDEy
235 2.7.0 Authentication successful
>>> MAIL From:<[email protected]> SIZE=97 [email protected]
550 5.7.1 Envio nao autorizado - Verifique o MX e/ou SPF do seu dominio
map_lookup(dequote, root, %0=root) => NOT FOUND (0)
map_lookup(dequote, root, %0=root) => NOT FOUND (0)
map_lookup(dequote, MAILER-DAEMON, %0=MAILER-DAEMON) => NOT FOUND (0)
map_lookup(host, my_domain.com.br, %0=my_domain.com.br) => my_domain.com.br. (0)
map_lookup(host, recipient_app.com, %0=recipient_app.com) => recipient_app.com. (0)
root... Connecting to local...
root... Sent
Closing connection to smtp.my_domain.com.br
>>> QUIT
注意: “my_user@my_domain.com.br”帐户能够从其网络邮件向“recipient@recipient_domain.com”帐户发送电子邮件。
错误: “550 5.7.1 Envio nao autorizado - Verifique o MX e/ou SPF do seu dominio”(葡萄牙语)/“550 5.7.1 未经授权的发送 - 检查您域的 MX 和/或 SPF”(英语)。
mc 文件需要 `x' 引号 [在问题的修订版中修复]
p
您已部署标准建议以禁止通过未加密的 SMTP 连接 [ flag inconfAUTH_OPTIONS
] 发送“纯文本”(未加密)密码。您的智能主机仅提供纯文本身份验证 [参见回复
AUTH
行] ,但不提供升级到加密连接 [无回复] 。EHLO
STARTTLS
EHLO
错误...
...发生是因为我们使用的 SMTP 服务要求“信封发件人”与有效的“发件人”相同。
为了解决这个问题,我们需要构建一个genericstable 数据库来将输入的发件人地址映射到所需的地址。
在我们的例子中,使用条目创建文件“/etc/mail/genericstable”,并在“/etc/mail/sendmail.mc”文件中
root my_user@my_domain.com.br
添加条目FEATURE(
genericstable' 。hash -o /etc/mail/genericstable.db')dnl
为了更好地理解,下面是完整的过程。
Sendmail - 安装和配置
运行以下命令来更新和安装依赖项...
创建身份验证文件...
构建一个“genericstable”数据库以将输入的发件人地址映射到所需的地址(“信封发件人”)。
创建“genericstable”文件...
使用“SMART_HOST”配置 Sendmail。
在“MAILER(smtp)dnl”行之前将以下配置行添加到“sendmail.mc”配置文件中...
内容...
重新构建 sendmail 的配置...
启用并启动 sendmail 服务...
测试你的配置
[参考:http : //blog.achinthagunasekara.com/2015/08/how-to-configure-sendmail-to-work-with.html,https : //access.redhat.com/discussions/2959431,https : //docs.cloud.oracle.com/iaas/Content/Email/Reference/sendmail.htm,https://serverfault.com/a/574118/276753,https://serverfault.com/a/839476/276753,_ _ _ _ https://superuser.com/a/1448009/195840 , https://tecadmin.net/sendmail-to-relay-emails-through-gmail-stmp/ , https://www.bonusbits.com/wiki/HowTo :Configure_SendMail_to_Use_SMTP_Relay,https ://www.sitepoint.com/community/t/email-mx-records-vs-spf-records/7947 ]
进一步的问题/加号:为什么将 Sendmail 与中继一起使用?
[参考: https ://support.nagios.com/forum/viewtopic.php?f=7&t=28246 ]