使用 vhosts 时如何配置 apache/php/postfix 网站邮箱?

使用 vhosts 时如何配置 apache/php/postfix 网站邮箱?

我配置了一个 LAMP 网络服务器来为多个网站提供服务。每个虚拟主机都有各种 PHP 应用程序,主要是 Wordpress。

当用户注册 Wordpress 网站时,电子邮件由 PHP 发送到 postfix,然后发送给接收者。问题是 postfix 使用 /etc/hostname 的内容向远程服务器标识自己,而 /etc/hostname 不是完全合格的域名。一些邮件服务器拒绝此操作,邮件会被退回。

此外,返回路径被随机设置为其中一个虚拟主机域。

我可以将 /etc/hostname 设置为其中一个网站域名,但来自其他网站的电子邮件标题中会出现错误的服务器,而且这无法解决返回路径问题。

可能相关,apache2 在启动时说“无法确定服务器的完全合格域名”。

我该如何解决这个问题,以便每个网站都可以发送电子邮件而不泄露服务器上托管的其他网站?

错误示例:

Oct 15 20:29:32 Ubuntu-1204-precise-64-minimal postfix/smtp[17214]: CD087E00DF6: to=<*****@*******.**>, relay=spool.mail.gandi.net[217.70.184.6]:25, delay=0.29, delays=0.12/0/0.09/0.07, dsn=5.5.2, status=bounced (host spool.mail.gandi.net[217.70.184.6] said: 504 5.5.2 <Ubuntu-1204-precise-64-minimal>: Helo command rejected: need fully-qualified hostname (in reply to RCPT TO command))

我现在已在 /etc/hosts 和 /etc/hostname 中设置了 FQDN,并重新启动了 apache2 和 postfix,但它仍然出现同样的错误。我甚至不知道它从哪里获取旧主机名,因为它不再存储在磁盘上的任何地方。

答案1

接受的答案让我成功了一半,谢谢。为了让每个虚拟主机都以正确的返回路径发送电子邮件,我必须在 apache2 虚拟主机配置中添加如下部分:

<IfModule mod_php5.c>
    php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f [email protected]"
</IfModule>

答案2

FQDN 最好应该与 MTA 公共 IP 地址的反向 DNS 条目相匹配。

主文件:

myhostname = fully.qualified.domain.name
myorigin = /etc/mailname

确保 /etc/mailname 也包含域名。

# cat /etc/mailname
fully.qualified.domain.name

然后:

postfix reload
postconf -n # to show currently running configuration

相关内容