告诉 sendmail 进行身份验证?

告诉 sendmail 进行身份验证?

我已经在这里坐了几个小时,试图让 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.mcaccess。当然,之后make是。/etc/mailservice 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 条目吗?[答案应该缩小可能出现的问题列表]

相关内容