Ошибка swiftmailer mail_send.php 500-Internal-Server-Error (Журнал: тайм-аут)

Моя система:

  • Операционная система: Linux VServer
  • Веб-сервер: apache2 Почтовый сервер (использующий IMAP): Dovecot
  • MTA (MailTransportAgent): Postfix + postfix.admin(веб-приложение) для администрирования
  • мой домен: acegames.de (137.74.140.78)
  • TLS-шифрование почты через порт 465 работает

Что я хочу сделать:

Выполните (Кнопка на сайте->javascript->ajax->php) php-скрипт mail_send.php (+ запрос) для отправки почты с функциями swiftmail. Swiftmail должен использовать мой постфиксный SMTP-сервер для отправки почты. Файлы swiftmail находятся в папке /var/www/html/ts/swiftmailer/.

это http://ts.acegames.de/mail_send.php или / var/www/html/ts/mail_send.php:

<?php 
require_once 'swiftmailer/lib/swift_required.php';

$error = $_GET['err']; $time = $_GET['time']; $user = $_GET['user'];

$transport = Swift_SmtpTransport::newInstance('acegames.de', 465);
$transport->setUsername("[email protected]");
$transport->setPassword("PASS");


$mailer = Swift_Mailer::newInstance($transport);


$message = Swift_Message::newInstance('Teamspeak Error Report');
$message->setFrom(array('[email protected]' => 'USER'));
$message->setTo(array('[email protected]' => 'ts3 report'));
$message->setBody(
'<html>' . 
' <head></head>' . 
' <body>' . 
' <p>Reported Error: ' . $error . '</p>' . 
'  <p>Time: ' . $time . '</p>' . 
'  <p>User: ' . $user . '</p>' . 
' </body>' . 
'</html>', 'text/html' );




// Send the email 
$result = $mailer->send($message); 
?>

Но я получаю 500-INTERNAL_SERVER_ERROR и следующий журнал: /var/log/apache2/error.log:

[:error] [pid 23732] [client 188.174.41.220:49670] PHP Fatal error:   Uncaught exception 'Swift_TransportException' with message 'Connection
to acegames.de:465 Timed Out'  in
/var/www/html/ts/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:404\nStack
trace:\n#0 
/var/www/html/ts/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(289):
Swift_Transport_AbstractSmtpTransport->_getFullResponse(0)\n#1 
/var/www/html/ts/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(117):
Swift_Transport_AbstractSmtpTransport->_readGreeting()\n#2 
/var/www/html/ts/swiftmailer/lib/classes/Swift/Mailer.php(79):
Swift_Transport_AbstractSmtpTransport->start()\n#3 
/var/www/html/ts/mail_send.php(36):
Swift_Mailer->send(Object(Swift_Message))\n#4 {main}\n  thrown in 
/var/www/html/ts/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php
on line 404, referer: https://ts.acegames.de/

Я не знаю, в чем проблема. Я просмотрел каждый файл журнала (журналы mail.log, syslog, apache2,...), но не нашел ничего, связанного с этой ошибкой.


person Luke_R    schedule 21.12.2016    source источник


Ответы (4)


В сообщении об ошибке говорится, что невозможно подключиться к указанному вами почтовому серверу. Вам нужно указать TLS следующим образом:

$transport = Swift_SmtpTransport::newInstance('acegames.de', 465, 'tls');

Подробнее читайте здесь: Руководство по Swiftmailer

person john    schedule 21.12.2016
comment
хорошая идея, но это ничего не исправило ... я читал, что если установлен порт 465, вам не нужно указывать tls, потому что он используется по умолчанию для этого порта. не знаю, где я это прочитал, но даже с «tls» он все равно выдает мне 500-INTERNAL_SERVER_ERROR и точно такой же журнал. - person Luke_R; 21.12.2016

У вас ошибка тайм-аута, я подозреваю, что это проблема с портом, проверьте, доступен или заблокирован выходной порт.

Я имею в виду, что, возможно, какой-то порт между вашим клиентом и сервером заблокирован брандмауэром или политикой безопасности, политикой спама и т. д.

person Hokusai    schedule 21.12.2016
comment
так порт ведьмы вы на самом деле имеете в виду. извините, но я не знаю выходной порт. Я не могу найти никаких документальных фильмов о порте, как вы его описали. - person Luke_R; 22.12.2016
comment
Итак, мой хостер говорит, что они не блокируют порты сервера, и я тоже. - person Luke_R; 22.12.2016
comment
только если я набираю telnet acegames.de smtp, он отправляет сообщение 220 pph-server.de Postfix ESMTP (Debian/GNU) и фактически реагирует на ввод. - person Luke_R; 22.12.2016
comment
похоже, что postfix на самом деле не прослушивает этот порт (465) ... это довольно запутанно - person Luke_R; 22.12.2016

Дополнительная информация по запросу @hokusai:

telnet acegames.de 465 Попытка 137.74.140.78... Подключено к acegames.de. Экранирующий символ – '^]'. ... Соединение прервано внешним хостом.

telnet acegames.de 443 Попытка 137.74.140.78... Подключено к acegames.de. Экранирующий символ – '^]'. ... Соединение прервано внешним хостом.

telnet acegames.de 80 Попытка 137.74.140.78... Подключено к acegames.de. Экранирующий символ – '^]'. 301 Перемещено навсегда

Переехал навсегда

Документ был перемещен сюда.

Сервер Apache/2.4.10 (Debian) на acegames.de, порт 80... Соединение закрыто внешним хостом.

person Luke_R    schedule 21.12.2016

Итак, если вы управляете почтовым сервером на acegames.de, покажите содержимое mail.log (/var/log/mail.log). На порту 465 что-то есть, но соединение немедленно закрывается.

person Ralf Hildebrandt    schedule 02.01.2017