本地唯一的sendmail,将所有邮件传递到目录

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

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

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

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

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

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

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

    在/etc/postfix/main.cf中:

      mydestination = pcre:/etc/postfix/mydestinations 

    在/ etc / postfix / mydestinations中

     /.*/ ACCEPT 

这将把postfix处理的所有邮件传递给#1中定义的已配置本地用户,因此不要将其用于除开发之外的任何其他内容。

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

你仍然需要提供它。 你只需要覆盖它传递的“位置”。

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

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

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

 smtp unix - - - - - local relay unix - - - - - local 

2.)在/etc/postfix创建一个名为virtual 。 将以下行放在该文件中,将替换为您希望将所有邮件传递到的本地用户帐户名:

 /.*/  

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

 sudo postmap /etc/postfix/virtual 

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

 virtual_alias_maps = regexp:/etc/postfix/virtual 

5.)重启后缀:

 sudo service postfix restart 

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

请参阅此处的另一种很酷的方法如何捕获在本地服务器上使用PHP发送的电子邮件 。

 $ sudo mkdir /var/log/mail $ sudo nano /usr/local/bin/sendmail 

将以下PHP脚本添加到这个新的“sendmail”文件中:

 #!/usr/bin/php  

sendmail_path = /usr/local/bin/sendmail/etc/php5/apache2/php.ini

 $ sudo chmod 755 /usr/local/bin/sendmail $ sudo chmod 777 /var/log/mail $ sudo /etc/init.d/apache2 restart 

现在你的所有邮件都在/var/log/mail文件夹中。

PS你也可以添加shell_exec("chmod 777 /var/log/mail/ -R");/usr/local/bin/sendmail

另一种方法是运行“FakeSMTP”服务器,一个跨平台的SMTP处理程序; 谁的目的是通过配置的电子邮件客户端接收电子邮件,存储和显示它们。

FakeSMTP截图