я использую phpMailer для отправки подтверждений покупки с помощью адреса приложения Google / smtp. Все это отлично работало с модулем разработки, но теперь, когда оно работает, кажется, что порт, который я использую (465), заблокирован.
Итак, я редактирую iptables с помощью:
-A INPUT -p tcp -dport 465 -j ACCEPT
-A INPUT -p tcp -sport 465 -j ACCEPT
Насколько я понимаю, это позволяет входящие и исходящие соединения на 465 (поправьте меня, если я ошибаюсь). После перезапуска iptables:
iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:465
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:465
Однако я все еще получаю сообщение «Не удалось подключиться к серверу: разрешение отклонено» при отладке от phpMailer. Из того, что я читал, это обычно означает, что порт закрыт, & очевидно это так.
Любые подсказки о том, как отлаживать это дальше? Любая помощь приветствуется.
Если это поможет, вот php:
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 1; //!DEV
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = $emailAddress;
$mail->Password = $emailPassword;
$mail->SetFrom($emailAddress, 'PURCHASE ORDER');
$mail->AddAddress($customerEmail);
$mail->AddAddress($salesEmail);
$mail->Subject = $subject;
$mail->Body = $body;
$mail->Send() or die('Error: ' . $mail->ErrorInfo);
* Edit: Почтовик безупречно работает на сервере разработки - есть какие-нибудь советы по сравнению, что может отличаться? Та же ОС, тот же php ... Я в тупике!
Вы сказали своему серверу принять входящий подключений на порт 465, но затем вы также говорите ему подключиться к smtp.gmail.com, который является исходящий подключение.
Вам нужно будет открыть те же порты, но в цепочке OUTPUT вместо INPUT:
-A OUTPUT -p tcp --dport 465 -j ACCEPT
Для редактирования из терминала команда будет выглядеть так:
iptables -A OUTPUT -p tcp --dport 465 -j ACCEPT
Проблема брандмауэра должен вызывает сообщения об ошибках «Соединение было сброшено» или «Время ожидания соединения истекло». PHPMailer мощь будет выдавать вам сообщение об ошибке "Permission denied" вместо одного из этих двух, но это будет плохое сообщение об ошибке. (Это не первый раз, когда я вижу плохие сообщения об ошибках.)
Если сообщение об ошибке «Не удалось подключиться к серверу: в разрешении отказано» полезно, это означает, что у вас есть safe_mode
включен или вы запретили открывать розетки в php.ini
.
Это также может быть вызвано SELinux. Я недостаточно знаком с этим, чтобы сказать вам, что делать, чтобы определить, так ли это, или исправить это.