Sendmail不能和iptables一起工作,即使允许smtp和dns

我已经在Ubuntu 10.04上安装了sendmail,专门用于使用php mail()函数。 这工作正常,除非iptables正在运行(我一直在使用sendmail myemailaddress@domain.com来testing这个)。

我认为我已经允许SMTP和DNS(我用来testingiptables规则的脚本如下,在我的版本是我的主机名称服务器的实际IP),但没有用!

 iptables --flush iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # Postgres iptables -A INPUT -p tcp --dport 5432 -j ACCEPT # Webmin iptables -A INPUT -p tcp --dport 10000 -j ACCEPT # Ping iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT # sendmail iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT # DNS iptables -A INPUT -p udp --sport 53 -s <nameserver1> -j ACCEPT iptables -A INPUT -p udp --sport 53 -s <nameserver2> -j ACCEPT iptables -A INPUT -p tcp --sport 53 -s <nameserver1> -j ACCEPT iptables -A INPUT -p tcp --sport 53 -s <nameserver2> -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -d <nameserver1> -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -d <nameserver2> -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -d <nameserver1> -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -d <nameserver2> -j ACCEPT iptables -A INPUT -j DROP # Add loopback iptables -I INPUT 1 -i lo -j ACCEPT 

  • 我如何使用通配符发送邮件TLS_Rcpt?
  • 为什么sendmail.mc文件支持没有格式化为m4语法的条目?
  • 如何用我的CentOS服务器发送电子邮件?
  • 最低PostFixconfiguration只发送电子邮件?
  • fedora无法启动 - sendmail sm-client exim放弃
  • 是sendmailcachingDNS或通过不同的方法比host / dig / nslookup吗?
  • 2 Solutions collect form web for “Sendmail不能和iptables一起工作,即使允许smtp和dns”

    目前你有:

     iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT 

    这使得:

    • 数据包发送到你的sendmail中,
    • 数据包从您的端口​​25出来,但仅用于已经build立的连接(所以只有来自外部的连接)。

    对于传出的电子邮件,您需要sendmail能够连接到外部世界。

    所以你也需要这样的东西:

     iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT iptables -A INPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT 

    请确保你不会成为一个开放的继电器。

    我假设你将连接到一个继电器(智能主机)发送邮件,并不需要任何传入的邮件。 如果不是,将会有更多的工作要做。 自动化系统往往没有configuration好的电子邮件服务,这可能会导致邮件被丢弃或发送到垃圾邮件存储桶。

    您可能想要使用conntrack来处理已build立的连接。 这简化了其余规则,因为您只需要担心其他规则中的新连接。

     iptable -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptable -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 

    您的ping条目之前,您的规则看起来不错。

    您的规则需要覆盖传出的stream量

     iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -j ACCEPT 

    您的ICMP规则似乎不完整

     iptables -A INPUT -p icmp --icmp-type 3/4 -j ACCEPT iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type 3/4 -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT 
    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.