我已经在这里坐了几个小时,试图让 sendmail 通过外部 SMTP 服务器发送电子邮件。我已经非常接近成功了,但现在我完全陷入了困境。似乎 sendmail 没有发送我设置的身份验证信息。我是不是漏掉了一些配置行?
请帮忙。 :(
运行 CentOS 5.7
编辑:
根据要求,我将在这里从我的发送邮件中添加一些内容。
我已指定使用身份验证信息的位置:
FEATURE(authinfo',hash -o /etc/mail/auth/client-info.db')dnl
在/etc/mail/auth/客户端信息:
AuthInfo:in.mailjet.com "U:myusername" "P:mypassword" "M:PLAIN"
尝试发送电子邮件:
# sendmail -AM -t -v
to:[email protected]
from:[email protected]
.
[email protected]... Connecting to in6.mailjet.com. via relay...
220 in6.mailjet.com ESMTP Mailjet
>>> EHLO mydomain.com
250-in6.mailjet.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
>>> STARTTLS
220 2.0.0 Ready to start TLS
>>> EHLO mydomain.com
250-in6.mailjet.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
>>> MAIL From:<[email protected]> SIZE=37
250 2.1.0 Ok
>>> RCPT To:<[email protected]>
>>> DATA
554 5.7.1 <[email protected]>: Relay access denied
554 5.5.1 Error: no valid recipients
>>> RSET
250 2.0.0 Ok
/root/dead.letter... Saved message in /root/dead.letter
Closing connection to in6.mailjet.com.
>>> QUIT
221 2.0.0 Bye
答案1
我也遇到了同样的问题。最后用几种配置解决了。
/etc/mail/sendmail.mc
define('SMART_HOST','smtp.yourdomain.com')dnl
define('confAUTH_OPTIONS','A')dnl
FEATURE('authinfo','hash -o /etc/mail/authinfo.db')dnl
MASQUERADE_AS('yourdomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN('yourdomain.com.')dnl
FEATURE('relay_based_on_MX')dnl
FEATURE('genericstable')dnl
GENERICS_DOMAIN('localhost.localdomain')dnl
/etc/mail/authinfo (660 permissions)
Authinfo:yourdomain.com "U:yoursmtpuserid" "P:yourpassword" "M:PLAIN"
Authinfo: "U:yoursmtpuserid" "P:yourpassword" "M:PLAIN"
>makemap hash /etc/mail/authinfo < /etc/mail/authinfo
/etc/mail/access (660 permissions)
connect:localhost.localdomain RELAY
connect:localhost RELAY
connect:127.0.0.1 RELAY
>makemap hash /etc/mail/access < /etc/mail/access
/etc/genericstable
root [email protected]
>makemap hash /etc/mail/genericstable < /etc/mail/genericstable
/etc/named.conf
options{
listen-on port 53 {127.0.0.1;};
};
>cp -f /etc/named.conf /var/named/chroot/etc/
/etc/resolve.conf
nameserver 127.0.0.1
nameserver youriplocal
domain localdomain
>chkconfig -> named on
-> saslauthd on
-> sendmail on
>service named restart
>service saslauthd restart
>service sendmail restart
要测试它,您可以执行:
sendmail -Am -t -v 至:电子邮件目的地 来自:您的电子邮件
我希望这个对你有用。
答案2
我在 sendmail.mc 中的简短配置作为客户端进行 SMTP 身份验证对于 mailjet.com :
include(`/etc/mail/sasl/sasl.m4')dnl
define(`SMART_HOST', `[in-v3.mailjet.com]')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
587 因为端口 25 被阻止。STARTTLS 和 ESMTP 现在自动安装在 Sendmail 中。之前,libsasl2-modules
(除了不必要的libsasl2-modules-db
)和sasl2-bin
必须安装。考虑切换到 START=是的在 /etc/defa ult/saslauthd 中(在 debian 中)
在访问中:
AuthInfo:mailjet.com "U:5xxxxx" "P:f6xxxxxx" "M:LOGIN PLAIN DIGEST-MD5 CRAM-MD5"
最后,运行/usr/share/sendmail/update_auth
。
因此,只有 2 个文件需要修改sendmail.mc
和access
。当然,之后make
是。/etc/mail
service sendmail restart
ps:很多教程,在后面加上:587 AuthInfo:mailjet.com
,这是AMHA的错误。调试-d60.5
(不同的查找图)是我的证明。
答案3
对于 sendmail,我通常通过添加条目来管理 SMTP 身份验证/etc/mail/access
。以下是您的设置的快速示例:
# /etc/mail/access
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
AuthInfo:in.mailjet.com "U:smmsp" "I:myusername" "P:mypassword" "M:PLAIN"
保存并重新启动 sendmail 守护进程/sbin/service sendmail restart
。
答案4
从功能 authinfo 中删除 -o(可选)并重新启动/重新加载 sendmail。这将使 sendmail 拒绝在无法访问 authinfo 映射/文件的情况下启动。
FEATURE(`authinfo',`hash ...')
重复向您发送带有跟踪地图查找的测试电子邮件(包括跟踪 authinfo 地图查找)
sendmail -d60.5 -AM -t -v
sendmail 会查找 authinfo 条目吗?[答案应该缩小可能出现的问题列表]