centos + qmail + telnet +open localhost 25 出现 Connection closed by foreign host

本文详细介绍了如何解决 CentOS Qmail smtp 服务因内存不足导致无法正常运行的问题,通过调整 memLimit 参数成功启动 smtp 服务,并提供了完整的脚本修改步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Last login: Wed Oct 26 02:20:04 2011 from 192.168.21.36
[root@centos-qmail ~]# netstat -a |grep smtp
tcp        0      0 *:smtp                      *:*                         LISTEN      
[root@centos-qmail ~]# telnet
telnet> open localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
[root@centos-qmail ~]# telnet 

 

回头看一下tcpserver才发现

warning: dropping connection, unable to run /var/qmail/bin/qmail-smtpd: out of memory


tcpserver: status: 0/20
tcpserver: status: 1/20
tcpserver: pid 1924 from 127.0.0.1
tcpserver: ok 1924 centos-qmail.local:127.0.0.1:25 localhost:127.0.0.1::49868
tcpserver: warning: dropping connection, unable to run /var/qmail/bin/qmail-smtpd: out of memory
tcpserver: end 1924 status 28416
tcpserver: status: 0/20

 

尝试着把

smtp/run改大点.竟然可以了

memLimit=10000000

本来官方中教程中是2000000,接着改400000,还不行,再改成10000000才ok了

-----------

#!/bin/sh

QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`

if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then

    echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
    echo /var/qmail/supervise/qmail-smtpd/run
    exit 1
fi

if [ ! -f /var/qmail/control/rcpthosts ]; then
    echo "No /var/qmail/control/rcpthosts!"
    echo "Refusing to start SMTP listener because it'll create an open relay"
    exit 1
fi

memLimit=10000000

echo "/usr/local/bin/softlimit -m $memLimit   /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD"         -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1"

exec /usr/local/bin/softlimit -m $memLimit   /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD"         -u "$QMAILDUID" -g "$NOFILESGID" 0 25 /var/qmail/bin/qmail-smtpd 2>&1

 

 

 

---------------

 

发送测试

 

-------

telnet> open localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 centos-qmail.local ESMTP
helo qq.com
250 centos-qmail.local
mail from:root@centos-qmail.local
250 ok
rcpt to:qiedizi^H
250 ok
rcpt to :qidizi@qq.com
250 ok
data
354 go ahead
k
k

.
250 ok 1319611689 qp 2717

### CentOS 7 中 'Connection Closed By Foreign Host' 的解决方案 在 CentOS 7 系统中遇到 `connection is closed by foreign host` 错误通常是由多种原因引起的,包括防火墙配置不当、SELinux 设置冲突以及服务未正常运行等。以下是针对该问题的具体分析和解决方法: #### 1. 防火墙配置检查 CentOS 7 默认使用 `firewalld` 来管理网络流量。如果目标端口被阻止,则可能导致连接失败。 - 使用以下命令查看当前开放的端口: ```bash firewall-cmd --list-all ``` - 如果需要允许特定的服务(如 HTTP 或 MySQL),可以执行以下命令: ```bash firewall-cmd --add-service=http --permanent firewall-cmd --reload ``` 确保相关服务已正确添加并启用[^1]。 #### 2. SELinux 设置调整 SELinux 是 Linux 系统中的安全模块,默认情况下可能会限制某些进程的行为。可以通过临时禁用来测试其影响,并根据需求永久修改配置文件。 - 暂时关闭 SELinux 测试效果: ```bash setenforce 0 ``` - 修改 `/etc/selinux/config` 文件以实现长期更改: ```bash sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config reboot ``` 注意:建议仅在确认必要时才完全禁用 SELinux;否则应通过布尔值调整具体行为[^2]。 #### 3. 网络接口与 IP 地址验证 错误也可能源于不正确的网络配置或虚拟网卡设置。对于多网卡环境下的别名地址分配需特别留意。 - 创建新的网络脚本副本用于定义额外的逻辑设备名称(例如 eth0:0): ```bash cd /etc/sysconfig/network-scripts/ cp ifcfg-eth0 ifcfg-eth0:0 vim ifcfg-eth0:0 ``` - 编辑新创建的文件内容如下所示: ```plaintext DEVICE=eth0:0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=<Your Secondary IP> NETMASK=<Subnet Mask> GATEWAY=<Gateway Address> DNS1=<Primary DNS Server> ``` 保存退出后重启网络服务使改动生效[^3]。 #### 4. Postfix 和 SASL 认证排查 当邮件服务器涉及外部客户端访问时,SMTP 身份验证机制可能成为障碍之一。请核查 postfix 主要参数设定是否满足实际应用场景的要求。 - 打开 main.cf 添加或者更新下列选项: ```plaintext smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, broken_sasl_auth_clients = yes smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_security_options = noanonymous ``` 完成编辑之后记得重载postfix守护程序让变动即时反映出来[^4]。 --- ### 总结 以上措施涵盖了从基础层面至高级功能的不同角度来处理 “connection is closed by foreign host” 这类常见难题。实施过程中务必逐一尝试每一步骤直至现象消失为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值