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