Sendmail 无法在命令行上运行,连接被智能主机拒绝

Sendmail 无法在命令行上运行,连接被智能主机拒绝

我正在尝试设置 sendmail,以便最终由驻留在同一个服务器(Digital Ocean droplet)上的 Django/python 应用程序使用,但是,在我尝试让它在 python 中工作之前,我想在命令行上对其进行测试。

我使用本教程进行了设置:https://www.cloudbooklet.com/how-to-install-and-setup-sendmail-on-ubuntu/,但是如果该链接消失,以下是我迄今为止运行的设置命令:

sudo apt update
sudo apt upgrade
sudo apt install sendmail
sudo vim /etc/hosts 
  (added my domain 'prosaurus' to the 127.0.0.1 line after localhost
sudo mkdir /etc/mail/authinfo
udo chmod -R 700 /etc/mail/authinfo
cd /etc/mail/authinfo
sudo vim smtp-auth 
  (added: AuthInfo: "U:root" "I:email-address" "P:password") with my info
sudo makemap hash smtp-auth < smtp-auth
cd /etc/mail
sudo vim sendmail.mc
Added all of this:
  define(`SMART_HOST',`[smtp.prosaurus.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/authinfo/smtp-auth.db')dnl
cd /etc/mail
make
sudo /etc/init.d/sendmail restart

注意:由于我没有使用 PHP,因此当教程讲到 PHP 部分时,我就停止了。我接下来做的是尝试在命令行中使用以下命令来使用 sendmail:

echo "Subject: sendmail test" | sendmail -v [email protected]

我得到的答复是这样的:

WARNING: local host name (ubuntu-myserverinfo) is not qualified; see cf/README: WHO AM I?
[email protected]... Connecting to [127.0.0.1] via relay...
220 ubuntu-myserverinfo ESMTP Sendmail 8.15.2/8.15.2/Debian-22ubuntu3; Tue, 27 Sep 2022 21:37:07 GMT; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
>>> EHLO ubuntu-myserverinfo
250-ubuntu-myserverinfo Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP
>>> VERB
250 2.0.0 Verbose mode
>>> MAIL From:<myuser@ubuntu-myserver> SIZE=23 AUTH=myuser@ubuntu-myserver
250 2.1.0 <myuser@ubuntu-myserver>... Sender ok
>>> RCPT To:<[email protected]>
>>> DATA
250 2.1.5 <[email protected]>... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
050 <[email protected]>... Connecting to smtp.prosaurus.com. port 587 via relay...
050 <[email protected]>... Deferred: Connection refused by smtp.prosaurus.com.
250 2.0.0 28RLb7KM022677 Message accepted for delivery
[email protected]... Sent (28RLb7KM022677 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0 ubuntu-myserver closing connection

注意:个人信息已从消息中删除

知道我错过了什么吗?

附录...

我想我可能没有完全理解发送电子邮件所涉及的内容。这是试图解释我的情况。

  1. 我只有一台服务器。这台服务器上有我的 Python 代码。这台服务器是我网站的目的地。所有 DNS 记录都指向这台服务器

  2. 我已按照列出的教程和命令在此服务器上安装了 sendmail。我没有使用任何其他电子邮件服务器。我的目标是将单个服务器设置为我的电子邮件服务器。

  3. 我自己配置​​了 sendmail。它指向 smtp.mysite.com。这对我来说似乎很奇怪,服务器必须自己联系自己才能发送电子邮件。似乎典型的设置实际上涉及多台服务器,而我把它们都放在同一台机器上的做法是错误的。

  4. 我没有在这台机器上安装邮件服务器(除了 sendmail 之外)。也许这就是缺少的东西?

答案1

您的本地 sendmail 已配置为使用智能主机。
配置智能主机拒绝来自本地 sendmail 的 TCP-SMTP 连接。

>>> VERB
[…]
050 <[email protected]>... Connecting to smtp.prosaurus.com. port 587 via relay...
050 <[email protected]>... Deferred: Connection refused by smtp.prosaurus.com.

进行最终测试:尝试使用telnet程序从您的主机获取 SMTP 问候消息。

telnet smtp.prosaurus.com 587

您可以在智能主机上 ctelnet SMTP (25) 或 SMTPS (465) 吗?
[传统 telnet 不会在 SMTPS (465) 端口上获取 SMTP 问候语,因为它不支持加密]

相关内容