sendmail 配置?

sendmail 配置?

我想从 C++ 程序发送电子邮件。

我想使用 sendmail 来实现。其实我并不关心如何实现,我只是发现没有一个 smtp 库可以工作...

我通过谷歌找到了实现此目的的方法是这样的:

echo "This will go into the body of the mail." | mail -s "Subject line" [email protected]

问题是,邮件从未到达目的地。现在我发现很奇怪:难道不需要 smtp 服务器 URL 吗?例如 smtp.my-provider.com:25 ?

答案1

Sendmail 将尝试查找您要发送到的域的 MX 记录,因此您不必默认指定 SMTP 服务器的地址或主机名。如果您确实需要强制使用特定地址,可以通过 DNS 或 Sendmail mailertable 文件中的条目来处理。

您首先应该尝试确定原始消息发生了什么。尝试从应用程序发送并运行:

tail -f /var/log/maillog

您还可以使用“mailq”命令直接查看邮件队列。如果该命令返回输出,您可以尝试使用“sendmail -v -q”强制处理该队列。这将揭示错误的性质。

还要检查根用户的电子邮件是否有退回邮件。

答案2

不需要 SMTP 服务器 DNS 名称,因为该mail命令需要与同一台机器上的本地邮件传输代理 (MTA) 进行通信。对于 Linux,该 MTA 通常是 Sendmail。如果您需要通过 ISP 的邮件服务器路由外发邮件,则 sendmail 配置可能包括 ISP 邮件服务器 (MTA) 的 DNS 名称作为智能主机。

我会检查邮件日志,看看你的外发邮件发生了什么。它可能正在排队等待投递,你可能会在适当的时候收到未送达报告。

相关内容