![我可以阻止 sendmail 发送电子邮件而是将其保存到文件中吗?](https://linux22.com/image/528890/%E6%88%91%E5%8F%AF%E4%BB%A5%E9%98%BB%E6%AD%A2%20sendmail%20%E5%8F%91%E9%80%81%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E8%80%8C%E6%98%AF%E5%B0%86%E5%85%B6%E4%BF%9D%E5%AD%98%E5%88%B0%E6%96%87%E4%BB%B6%E4%B8%AD%E5%90%97%EF%BC%9F.png)
我想在虚拟服务器上测试 Newsletter 应用程序,但我不想让我的数据库(从实时服务器转储)中的所有客户端都收到电子邮件。有没有办法阻止 sendmail 真正发送这些邮件,而是将它们保存到文件或类似的东西中?
答案1
你可以做这样的事情:
LOCAL_CONFIG
# File that contains recipients usernames that interest us in this test
F{Users} -o /etc/mail/users-to-test
# File that contains recipients domains that interest us in this test
F{Domains} -o /etc/mail/domains-to-test
LOCAL_RULE_2
R $={Users} < @ $={Domains} . > $#discard $: discard
/etc/mail/users-to-test 包含我们不希望他们从测试服务器接收电子邮件的用户名。规则集 2 的这一附加内容将丢弃发送给他们的所有电子邮件,并且假定上述规则集适用于在测试机器上运行的 sendmail,而不是生产服务器上的 sendmail。
PS:制表符将规则的左侧与右侧分开。制表符而不是空格,因此请勿复制粘贴。
答案2
我们在专用 SMTP 服务器上使用多个 sendmail 实例(每个实例监听不同的虚拟接口)来实现这一点,该服务器还运行 cyrus IMAP 服务器。我们有多个实例,因为我们将有多组开发人员/测试人员尝试不同的事物。
在 sendmail mc 文件中...
FEATURE(`mailertable', `hash -o /etc/mail/mroute2-mailertable.db')dnl
在 mailertable 文件中(字段由制表符分隔,行的顺序很重要)...
mailtest.ncl.ac.uk smtp:mailtest.ncl.ac.uk
. local:paul
该示例将正常传送给 mailtest.ncl.ac.uk 域中的用户的消息,其他所有消息都将传送到 paul 的本地邮箱。如果您希望将所有消息存储在本地邮箱中,则只需一行表单
. local:paul
应该这么做。
答案3
如果您有一个 Windows 机器,那么您可以运行一个简单的 .EXE 文件——无需安装。
与 Windows 7/Vista/XP/2003/2010 兼容的虚拟 SMTP 服务器。位于系统托盘中,不传送收到的消息。可以快速查看、保存收到的消息并检查其来源/结构。适用于测试/调试生成电子邮件的软件。
我们在我们的开发系统中使用它并且效果很好。