【问题标题】:Phpmailer with postfix带后缀的phpmailer
【发布时间】:2014-02-04 11:28:12
【问题描述】:

我有两台服务器,一台是电子邮件服务器,另一台是网络服务器,但我有一个需要发送电子邮件的应用程序,为此我使用的是 phpmailer,一开始我使用的是 gmail 并且工作正常,但现在我必须使用我自己的电子邮件服务器,因为该服务器正在运行 postfix,但我可以让它工作

这是我的 phpmailer 代码

public function __construct() { {
        $this->mail = new PHPMailer();
        $this->mail->isSMTP();
        $this->mail->SMTPSecure = false;    
        $this->mail->Host = 'xxxx.xxxx.xxxx.xxxx';
        $this->mail->Port = 25;
        $this->mail->Username = 'root@mydomain.com';
        $this->mail->Password = '';
        $this->mail->SetFrom('user', 'My Page');
    }

后缀配置

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mydomain.com, localhost, localhost.localdomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

当我尝试从我的应用程序发送电子邮件时,我收到以下错误

SMTP -> FROM SERVER:220 mydomain.com ESMTP Postfix (Ubuntu)
CLIENT -> SMTP: EHLO www.mydomain.com
SMTP -> FROM SERVER: 250-mydomain.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN
CLIENT -> SMTP: MAIL FROM:
SMTP -> FROM SERVER:250 2.1.0 Ok
CLIENT -> SMTP: RCPT TO:
SMTP -> FROM SERVER:454 4.7.1 : Relay access denied
SMTP -> ERROR: RCPT not accepted from server: 454 4.7.1 : Relay access denied
SMTP Error: The following recipients failed: account@hotmail.com Error

事实上,这是我第一次配置和电子邮件服务器,我现在不知道该做什么。

我从命令行测试了 postfix 并且工作正常。

【问题讨论】:

  • 答案(和往常一样)在日志中 - 您尚未将 MTA 配置为允许中继。如果您使用不同的客户端对此进行了测试,那么您自己就会知道这与 PHP 无关。但是安全地配置 MTA非常 困难 - 而且您没有配置身份验证,也没有正确设置 TLS。该 MTA 将在您将垃圾邮件暴露在互联网上后的几分钟内转发垃圾邮件。我建议你在这方面获得一些帮助。
  • 可能是解决此问题的另一个建议
  • 我找到的唯一解决方案是使用 sendmail,但安装在我的应用程序所在的 Web 服务器中
  • 这不是解决方案。

标签: php email postfix-mta


【解决方案1】:

我最近遇到了类似的问题.. [https://serverfault.com/questions/646409/how-do-i-configure-postfix-to-allow-phpmailer-to-send-out-email-through-it][1]

我可以通过在 postfix master.conf 中添加以下内容来修复..

smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination

更多关于 smtpd_recipient_restrictions 的信息,请戳Linux postfix/dovecot 554 Relay access denied

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2021-08-11
    • 2011-01-08
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    相关资源
    最近更新 更多