Roh*_*nga 35 linux smtp nat mailx
假设我使用以下命令发送邮件:
mailx person@x.com
Run Code Online (Sandbox Code Playgroud)
然后mailx首先尝试找出我的ISP的SMTP服务器以中继邮件还是直接连接。这是否取决于我的 PC 是否具有公共 IP 地址或位于 NAT 后面。如何在我的 PC 上检查 mailx 的设置?如何使用 tcpdump 验证这一点?
eri*_*zma 36
mailx 可以使用 SMTP。它的配置文件是 ~/.mailrc
一个例子是mailx 使用 Gmail 的 SMTP。
配置甚至可以在一个命令中:
mailx -v -s "$EMAIL_SUBJECT" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://smtp.gmail.com:587 \
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
-S smtp-auth-user=$FROM_EMAIL_ADDRESS \
-S smtp-auth-password=$EMAIL_ACCOUNT_PASSWORD \
-S ssl-verify=ignore \
-S nss-config-dir=~/.mozilla/firefox/xxxxxxxx.default/ \
$TO_EMAIL_ADDRESS
Run Code Online (Sandbox Code Playgroud)
如果使用普通的SMTP服务器,那就简单多了(详细介绍看这里):
mailx -v -s "$EMAIL_SUBJECT" \
-S smtp=smtp://smtp.example.com
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
$TO_EMAIL_ADDRESS
Run Code Online (Sandbox Code Playgroud)
你也可以把这些放到mailx的配置文件~/.mailrc中
use*_*686 33
传统上,Unixmail
和衍生产品(以及许多其他 Unix 工具)使用/usr/bin/sendmail
几乎所有邮件传输代理(MTA – postfix、exim、courier,当然还有 sendmail)提供的接口。
也就是说,该mail
程序不使用任何网络协议——它sendmail
通过 stdin提供消息,并让它处理实际的传递。(这可以追溯到一些邮件使用 SMTP,一些使用 UUCP,一些使用 BITNET 的时代......)
一旦邮件通过 排队sendmail
,MTA 就会处理实际的邮件传输,无论是通过 SMTP 还是其他方式。根据配置,它可以直接连接到目标 MTA,也可以通过另一台主机(也称为智能主机)中继邮件。
直接连接在服务器上更常见;通过智能主机中继在家庭连接的个人计算机上更为常见 - 通过您的 Gmail 或 ISP/工作电子邮件帐户进行中继对于避免全面的“动态 IP”反垃圾邮件过滤器至关重要。
(某些 MTA,例如esmtp
或nullmailer
是专门为家庭用户构建的,并且始终使用中继主机。这些不支持接收邮件,并且在资源上要轻得多。)
邮箱?[/usr/bin/sendmail] ? 本地 MTA 队列 ? [SMTP] ? 收件人 MTA ? 收件人收件箱
邮箱?[/usr/bin/sendmail] ? 本地 MTA 队列 ? [SMTP] ? Gmail 或 ISP/工作服务器?[SMTP] ? 收件人 MTA ? 收件人收件箱
其他程序,主要是用户友好的图形客户端,如 Thunderbird 或 Outlook,总是直接连接到中继/智能主机 SMTP 服务器(同样,通常是 Gmail 或 ISP/工作 SMTP 服务器),它代表您传输消息。
原生支持SMTP中存在heirloom-mailx
,但不是传统bsd-mailx
。
应用程序 ?[SMTP] ? Gmail 或 ISP/工作服务器?[SMTP] ? 收件人 MTA ? 收件人收件箱
第三种方法——直接连接到收件人的服务器——几乎从未使用过,并且没有 MUA 支持它。在个人计算机上,使用它会导致您的邮件被拒绝(大量垃圾邮件是从受感染的家庭用户 IP 地址发送的)。
应用程序 ?[SMTP] ? 收件人 MTA ? 被垃圾邮件过滤器捕获
归档时间: |
|
查看次数: |
166570 次 |
最近记录: |