1 dns smtp sendmail postfix ssmtp
我有一个网站,上面有一些基于 PHP 的 CMS,我是唯一的用户。这个网站有一个简单的联系表格(姓名、电子邮件、电话和正文),我可以通过它收到来自非注册用户的邮件。
一方面,我想将电子邮件从该表单直接传输到我的电子邮件帐户。
另一方面,我不想设置任何 DNS 记录,因为我至少有一次垃圾邮件目录没有问题,因为我会将站点机器的 IP 放在一个好列表中。
我知道我可以通过三种方式在任何 Linux 系统上使用 SMTP 协议(通过 PHPmail()功能):
postfix)。ssmtp),其中还包括向可能的黑客显示ssmtp配置文件中的代理电子邮件帐户的地址和密码,以便该程序可以使用该帐户作为代理。是否有sendmail 二进制文件这样的概念,如果有,它与前两个选项有何不同?
这是两种方式中的第一种:
(第三种方式是将老式邮件注入协议与本地/远程服务器对话,但我认为世界上二十年已经采用了正确的 SMTP 提交,与 SMTP 中继不同。)
1980 年代的旧 BSD Sendmail 程序,曾经但不再是一个非常流行的邮件子系统,它允许邮件用户代理,当时的邮件阅读器和新闻阅读器以及通过邮件报告内容的各种子系统,通过运行来提交邮件程序将消息信封作为命令行参数,将消息内容(标题和正文)作为程序的标准输入。像 BerkeleyMail和 AT&Tmailx这样的MUA没有像他们的前身那样直接将邮件注入用户邮箱。相反,他们使用相关的命令行参数创建了一个运行 Sendmail 的子进程,并通过管道将消息内容发送到该子进程。
该程序通常不在 shell 的命令搜索路径上,而是有一个众所周知的路径名,用于运行它。MUA 通常具有可配置选项以允许用户覆盖编译路径名,但在没有该 MUA 的情况下,它会在名为/usr/ucb/sendmail(或/usr/libexec/sendmail, 或/usr/lib/sendmail, or/usr/sbin/sendmail或其他类似文件名的文件中运行程序,从操作系统到操作系统)。
这个包含Sendmail程序的二进制程序映像文件成为邮件提交的实际方案。取代 BSD Sendmail 的替代邮件传输系统最终提供了一个他们自己的程序,这个程序仍然被称为MUA,它可以与各种不同的系统互操作。sendmail
最初的程序当然是 BSD Sendmail 本身,它是一个单一的程序,它同时完成了 MTS 的所有工作。这可以在各种不同的模式下运行,可以通过多个选项进行选择。提交只是其中一种模式,恰好是默认模式。-bx-bm
许多替代MTSes根本不以这种方式工作,他们更换的功能sendmail程序仅限于只是邮件提交。
-bxsendmail支持一大堆模式,但在幕后将工作转移到多个本地程序中。sendmail垫片的之一,但要求用户使用上述 MUA 配置设置来指向其submit程序。MMDF doco 给出了如何配置 Mutt 的示例:设置 sendmail='/usr/mmdf/bin/submit -mlnre'
Windows NT 从来没有真正有过类似的东西,这就是为什么你会发现跨平台软件对不同的行为进行了概括性的讨论。它还缺乏简单地期望每个主机都具有某种形式的邮件功能的传统。(例如,直到今天,FreeBSD 的各个部分都希望能够将邮件发送给用户和系统管理员作为日常事务。)
(OS/2 也没有传统,甚至不是多用户。然而,它也带有一个 BSD Sendmail 的端口。我曾经为 OS/2 编写了一个替代 MTS,并为 IBM 提供的sendmail.exe.与 Zmailer 的 类似sendmail,它在幕后将东西转移到本机程序中。)
但是,在 Unices 上,邮件系统的存在被视为已读。此外,在服务器侦听 TCP 套接字的想法变得普遍之前,这种机制不仅仅是邮件的规范。一个运行 set-GID/set-UID 程序并为其提供命令行参数和标准输入数据以提交打印作业、安排 UUCP 作业和安排at作业。
替换sendmail程序通常不像 BSD Sendmail 程序那样设置-UID/设置-GID。(有时,就像 mini-qmail 和其他系统一样,只是将所有邮件推送到另一台主机上的队列,根本不需要任何 set-ID 程序。其他时候,set-ID 程序是 MTS 的本机程序sendmail包装的程序。)而且它们通常只支持提交。但这仍然是今天提交邮件的两种方式之一。
sendmail. Zmailer 手册。zmailer.org。submit. 系统管理员手册。上海合作组织。sendmail. 维护命令。2017-05-13。伊卢莫斯。有三种方法可以从 php 中获取邮件。
mail()说话/usr/lib/sendmail或类似mail() 将 SMTP 与 MTA 对话(主要用于 Windows)您列出的 3 个选项都是变体选项 1。
Postfix 和 ssmtp 都提供了一个 sendmail 二进制文件,php 在您调用mail().
访问 sendmail 的第四种方法是使用popen(),如果你走那条路线,请务必shellescape()在所有参数上使用,由于几年前未能逃脱 args,WordPress 出现了重大漏洞。这导致功能从mail().
在所有情况下,对您的服务器的成功攻击都会暴露您的 SMTP 凭据,因此它们不应与其他系统共享。或者应该是不可移植的类型(例如:如果您的服务器的 SMTP 帐户与您的服务器的 IP 地址相关联)。切勿使用您的 IMAP 密码,如果该密码暴露,您的身份(域名等)可能会被盗。
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |