Sendmail 配置 SMTP 中继端口 465

Sendmail 配置 SMTP 中继端口 465

我正在尝试使用 sendmail (LAMP) 设置 Ubuntu VM,但似乎无法让 sendmail 真正发送任何内容。我读到我需要设置一个 SMTP 中继到一个有效的域名,我有这个域名(不是 Gmail)。

以下是我以 root 身份采取的步骤:

apt-get install sendmail mailutils
cd /etc/mail
mkdir auth
chmod 700 auth
vi auth/client-info
    AuthInfo:mail.<mydomain.net> "U:user" "I:user" "P:password"
    TLS_Srv:mail.<mydomain.net> ENCR:128
makemap hash auth/client-info < auth/client-info
chmod 600 auth/client-info
vi sendmail.mc
    After MAILER_DEFINITIONS:
    Add define(`SMART_HOST',`mail.<mydomain.net>')dnl
    define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    FEATURE('authinfo','hash /etc/mail/auth/client-info')dnl
m4 sendmail.mc > sendmail.cf

当我测试它时,我会

(echo subject: test; echo ) | sendmail -v -i -Am -- [email protected]

而且它好像挂在那里而什么也不做。

在我的错误日志 /var/log/mail.err 中我有以下内容:

Mar 24 09:40:01 webDev sm-msp-queue[15397]: My unqualified host name (webDev) unknown; sleeping for retry
Mar 24 09:41:01 webDev sm-msp-queue[15397]: unable to qualify my own domain name (webDev) -- using short name

由于服务器设置为使用端口 465,我唯一无法弄清楚的是如何使用不同的端口。连接安全是 SSL/TLS 和纯文本密码。

我缺少什么才能使这个配置正常工作?

编辑:我已经更改了 /etc/hosts 并将我的计算机名设置为 FQDN,它不再像挂起了。

我现在遇到一个问题“延迟:连接被拒绝”使用 Wireshark 我发现发送到邮件的数据包位于端口 25 上。对邮件进行 Nmap 扫描。端口 25 已关闭。

答案1

此时,我放弃了使用我的主机作为发送邮件中继的想法,转而使用 Gmail。

我找到了很多帮助配置的网站。我已经在 Ubuntu 和 CentOS 上测试过了……希望对某些人有帮助。

apt-get update

vi /etc/hostname
# Enter valid FQDN name

apt-get install sendmail sendmail-cf sasl2-bin

cd /etc/mail
mkdir certs
chmod 700 certs/
cd certs/

openssl dsaparam 1024 -out dsa1024.pem
openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out /etc/mail/certs/mycert.pem -

keyout /etc/mail/certs/mykey.pem
# Enter "US" for Country Name (Can leave everything else blank)

openssl req -x509 -new -days 3650 -key /etc/mail/certs/mykey.pem -out 

/etc/mail/certs/mycert.pem
# Enter "US" for Country Name (Can leave everything else blank)

ln -s /etc/mail/certs/mycert.pem /etc/mail/certs/CAcert.pem
chmod 600 /etc/mail/certs/*

cd ..
mkdir auth
chmod 700 auth/

vi auth/client-info

内容:

AuthInfo:smtp.gmail.com "U:root" "I:<emailAddress>@gmail.com" "P:password"
AuthInfo: "U:root" "I:<emailAddress>@gmail.com" "P:password"

然后,

makemap -r hash /etc/mail/auth/client-info.db < /etc/mail/auth/client-info

vi sendmail.mc

在“MAILER(local)dnl”上方添加:

dnl #
dnl # SSL Settings
define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs')
define(`confCACERT_PATH', `CERT_DIR')
define(`confCACERT', `CERT_DIR/CAcert.pem')
define(`confSERVER_CERT', `CERT_DIR/mycert.pem')
define(`confSERVER_KEY', `CERT_DIR/mykey.pem')
define(`confCLIENT_CERT', `CERT_DIR/mycert.pem')
define(`confCLIENT_KEY', `CERT_DIR/mykey.pem')
dnl #
dnl # GMAIL FORWARDING
define(`SMART_HOST',`smtp.gmail.com')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/auth/client-info.db')dnl

然后,

m4 sendmail.mc > sendmail.cf

service sendmail stop

service sendmail start

(echo subject: test; echo ) | /usr/sbin/sendmail -v -i -Am -- [email protected]

答案2

我的不合格主机名(X)未知;正在休眠以重试

设置您的主机完全限定域名(主机名+域名)

使用主机名为了快速修复,请编辑 /etc/hostname 以进行永久更改。

不太受欢迎的选择
如果你只是想让 sendmail 开心,那么请遵循 sendmail 的“我是谁?”(定义 confDOMAIN_NAME)在 sendmail.mc 和 subit.mc 中,将它们重新编译为 *.cf 文件。

答案3

强制加密传出 SMTP(用于纯文本验证)

mail.mouseware.net (Exim) 监听端口 25 (smtp) 和 465 (smtps)。它在端口 25 上提供 STARTTLS。STARTTLS 将未加密的连接转换为加密连接。

您强制 sendmail 在与 mail.mouseware.net 的 SMTP 连接上始终使用 STARTTLS。
使用以下访问表条目:

TLS_Srv:mail.mouseware.net ENCR:128

  • ENCR:128 - 需要 128 位加密,无需服务器证书验证
  • VERIFY:128 - 需要 128 位加密并进行服务器证书验证

要测试它,请以root身份执行以下命令:
(echo subject: test; echo ) | sendmail -v -i -Am --[电子邮件保护]

PS Sendmail 可以轻松处理传入的 SMTPS 连接,但传出连接配置起来比较困难。在端口 25 的访问被阻止的情况下,可以配置 Sendail 以连接端口 587(用于客户端提交的 SMTP)。

相关内容