2014-01-15 2 views
0

У меня есть два сервера, один из них - сервер электронной почты, а другой - веб-сервер, но у меня есть приложение, которое должно отправлять электронные письма, а для этого я использую phpmailer, вначале я использовал gmail и работал хорошо, но теперь я должен использовать свой собственный сервер электронной почты, на этом сервере работает Postfix, но я могу заставить его работатьPhpmailer с 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 = '[email protected]'; 
     $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: [email protected] Error 

Истина заключается в том, что это мой первый раз, настройки и сервера электронной почты, и я понятия не имею, что теперь делать.

Я тестировал постфикс из командной строки и работает.

+1

Ответ (как обычно) находится в журналах - вы не настроили MTA, чтобы разрешить ретрансляцию. Если бы вы протестировали это с другим клиентом, вы бы сами знали, что это не связано с PHP. Но настройка MTA безопасно ** очень сложна - и вы не настроили аутентификацию и не настроили правильно TLS. Этот MTA будет передавать спам в течение нескольких минут после того, как вы разоблачите его в Интернете. Я бы порекомендовал вам помощь в этом. – symcbean

+0

Может быть, еще одно предложение решить эту проблему. –

+0

Единственное решение, которое я нашел, это использовать sendmail, но установлен на веб-сервере, где находится мое приложение. –

ответ

-1

У меня была аналогичная проблема в последнее время .. [https://serverfault.com/questions/646409/how-do-i-configure-postfix-to-allow-phpmailer-to-send-out-email-through-it][1]

я мог исправить, добавив следующие строки в постфикса master.conf ..

smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination 

Подробнее о smtpd_recipient_restrictions, пожалуйста, цыпленок этот Linux postfix/dovecot 554 Relay access denied