将所有邮件发送到目录的仅本地 sendmail

Gar*_*eth 8 postfix localhost sendmail

我有一个开发 Ubuntu Server (12.04.1) VM,用于开发 php 站点和电子商务站点(如 Magento 等)。

因为这是出于开发目的,并且我需要使用我自己以外的电子邮件地址进行测试,所以我需要一种让 sendmail 命令接受邮件但不实际发送邮件的方法,而是存档是我可以查看的地方它。

安装邮件服务器以便 sendmail 命令将所有邮件路由到本地目录的最简单方法是什么?即我不希望任何邮件被传送到互联网。

我尝试了这个问题中讨论的步骤(SMTP 服务器将所有邮件发送到 user@localhost),但它似乎不起作用 - 我的(本地)邮箱中收到一条错误消息,告诉我它无法发送我的测试消息(例如,someone@gmail.com)

Gar*_*eth 7

要回答我自己的问题,可以使用 postfix。你必须做两件事:

  1. 添加SMTP 服务器中讨论的配置选项以将所有邮件发送到 user@localhost,将以下内容添加到您的 /etc/postfix/main.cf 文件中:

    luser_relay = MYLOCALUSER@localhost
    local_recipient_maps =
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在 serverfault 上使用以下答案(https://serverfault.com/questions/133190/host-wildcard-subdomains-using-postfix),我添加了以下内容(请注意,您需要安装 postfix-pcre 包):

    在 /etc/postfix/main.cf 中:

     mydestination = pcre:/etc/postfix/mydestinations
    
    Run Code Online (Sandbox Code Playgroud)

    在 /etc/postfix/mydestinations

    /.*/         ACCEPT
    
    Run Code Online (Sandbox Code Playgroud)

这会将 postfix 处理的所有邮件发送给 #1 中定义的已配置本地用户,因此不要将其用于开发以外的任何其他用途。


小智 5

“因为这是出于开发目的,我需要使用我自己以外的电子邮件地址进行测试,所以我需要一种方法让 sendmail 命令接受邮件但不实际发送邮件,而是存档是我可以查看的地方在它。”

你仍然需要交付它。您只需要覆盖它交付的“位置”。

“安装邮件服务器以便 sendmail 命令将所有邮件路由到本地目录的最简单方法是什么?即,我不希望将任何邮件发送到 Internet。”

这实际上可以仅使用默认的 postfix 安装包来完成(不需要 postfix-pcre)。

1.) 按照此处的教程,编辑/etc/postfix/master.cf文件中的2 行以防止任何邮件从外部传递(它会卡在本地邮件队列中):

smtp      unix  -       -       -       -       -       local
relay     unix  -       -       -       -       -       local
Run Code Online (Sandbox Code Playgroud)

2.) 在/etc/postfix名为virtual. <USERNAME>将以下行放在该文件中,替换为您希望将所有邮件发送到的本地用户帐户名:

/.*/    <USERNAME>
Run Code Online (Sandbox Code Playgroud)

3.) 运行以下命令为 postfix 创建正确的数据库文件以查找这个新的“虚拟别名映射”。新的自动生成的数据库文件将被称为“virtual.db”

sudo postmap /etc/postfix/virtual
Run Code Online (Sandbox Code Playgroud)

4.) 将以下行添加到 /etc/postfix/main.cf

virtual_alias_maps = regexp:/etc/postfix/virtual
Run Code Online (Sandbox Code Playgroud)

5.) 重启后缀:

sudo service postfix restart
Run Code Online (Sandbox Code Playgroud)

现在,所有邮件,无论发件人、收件人或指向此 SMTP 服务器的程序如何,都将在本地发送给指定的用户。现在有许多选项可以读取/检索这些消息。如果您安装了 IMAP 或 POP3 信使(例如dovecot),您可以使用邮件用户代理(Thunderbird、Outlook 等)连接到您的本地邮箱并阅读邮件。