我正在使用 PHPMailer 类从在线应用程序发送电子邮件,它在开发服务器上运行良好,如果我禁用 iptables 也是如此。但是,每当启动 iptables 时,都不会发送邮件 - 它似乎在排队,直到我停止 iptables - 然后它才会发送。
我最初按照此处的说明进行 iptables 设置:
非常感谢您的任何建议!
这是我的 iptables 规则:
Chain INPUT (policy DROP)
target prot opt source destination
fail2ban-SSH tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x00
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x3F
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
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 dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:25 state ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
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 state NEW tcp dpt:587
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:25 state NEW,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 state NEW,ESTABLISHED
Chain fail2ban-SSH (1 references)
target prot opt source destination
REJECT all -- **IP ADDRESS OF SERVER*** 0.0.0.0/0 reject-with icmp-port-unreachable
RETURN all -- 0.0.0.0/0 0.0.0.0/0
最后,PHPMailer 没有给出任何错误消息,所以我认为它成功卸载了它。
以下是电子邮件发送脚本的典型示例:
require_once(BASE_DIR.'classes/class.phpmailer.php');
$mail = new PHPMailer();
$body = 'html content';
$recipients = explode(',', $data['user_email'] );
foreach ($recipients as $recipient) {
$mail->AddAddress(trim($recipient));
}
$mail->AddReplyTo( APP_EMAIL_SEND, APP_NAME);
$mail->IsHTML(TRUE);
$mail->From = APP_EMAIL_SEND;
$mail->FromName = APP_NAME;
$mail->Subject = 'Subject';
$mail->Body = $body;
$mail->Send();
答案1
您正在阻止服务器上的所有 UDP 流量,因此 DNS 查找也不起作用。您应该允许来自/到 UDP 端口 53 的流量。