本地唯一的sendmail,将所有邮件传递到目录
我有一个开发Ubuntu Server(12.04.1)VM,我用它来开发php站点和电子商务站点(如Magento等)。
因为这是出于开发目的,我需要使用除我自己以外的电子邮件地址进行测试,我需要一种方法让sendmail命令接受邮件但不实际传递它,而是存档在我可以查看的地方它。
安装邮件服务器的最简单方法是什么,sendmail命令将所有邮件路由到本地目录? 即我不希望任何邮件被送到互联网。
我尝试了这个问题中讨论的步骤( SMTP服务器将所有邮件传递给用户@ localhost ),但它似乎不起作用 – 我在我的(本地)邮箱中收到一条错误消息,告诉我它无法传递我的测试消息(例如someone@gmail.com)
要回答我自己的问题,使用postfix是可能的。 你必须做两件事:
-
添加SMTP服务器中讨论的配置选项以将所有邮件传递给user @ localhost ,将以下内容添加到/etc/postfix/main.cf文件中:
luser_relay = MYLOCALUSER@localhost local_recipient_maps =
-
在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处理程序; 谁的目的是通过配置的电子邮件客户端接收电子邮件,存储和显示它们。