继续阅读完整内容
支持我们的网站,请点击查看下方广告
提供一个完全重写的干净配置:
#!/bin/bashecho "=== 完全重写Postfix配置 ==="
# 1. 停止Postfixecho "1. 停止Postfix服务..."sudo systemctl stop postfix
# 2. 备份当前配置echo "2. 备份当前配置..."BACKUP_DIR="/root/postfix_backup_$(date +%Y%m%d_%H%M%S)"sudo mkdir -p "$BACKUP_DIR"sudo cp -r /etc/postfix "$BACKUP_DIR/"
# 3. 创建全新的最小化配置echo "3. 创建全新配置..."sudo tee /etc/postfix/main.cf << 'EOF'# ========== 基本配置 ==========myhostname = localhostmydomain = localhostmyorigin = $myhostname
# 网络设置inet_interfaces = loopback-onlyinet_protocols = ipv4
# 目的地mydestination = localhost, localhost.localdomain
# 网络限制mynetworks = 127.0.0.0/8
# 安全设置smtpd_banner = $myhostname ESMTPbiff = noappend_dot_mydomain = noreadme_directory = no
# 性能设置mailbox_size_limit = 0recipient_delimiter = +disable_vrfy_command = yes
# 中继控制smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destinationEOF
# 4. 简化master.cf,暂时禁用SSLecho "4. 简化master.cf配置..."sudo tee /etc/postfix/master.cf << 'EOF'## Postfix master process configuration file## ==========================================================================# service type private unpriv chroot wakeup maxproc command + args# (yes) (yes) (yes) (never) (100)# ==========================================================================smtp inet n - y - 10 smtpd#smtps inet n - y - - smtpd# -o smtpd_tls_wrappermode=yes#submission inet n - y - - smtpd# -o smtpd_tls_security_level=encryptpickup unix n - y 60 1 pickupcleanup unix n - y - 0 cleanupqmgr unix n - n 300 1 qmgrtlsmgr unix - - y 1000? 1 tlsmgrrewrite unix - - y - - trivial-rewritebounce unix - - y - 0 bouncedefer unix - - y - 0 bouncetrace unix - - y - 0 bounceverify unix - - y - 1 verifyflush unix n - y 1000? 0 flushproxymap unix - - n - - proxymapproxywrite unix - - n - 1 proxymapsmtp unix - - y - - smtprelay unix - - y - - smtp-o smtp_helo_timeout=5 -o smtp_connect_timeout=5showq unix n - y - - showqerror unix - - y - - errorretry unix - - y - - errordiscard unix - - y - - discardlocal unix - n n - - localvirtual unix - n n - - virtuallmtp unix - - y - - lmtpanvil unix - - y - 1 anvilscache unix - - y - 1 scache
# ====================================================================# Interfaces to non-Postfix software# ====================================================================maildrop unix - n n - - pipeflags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}ifmail unix - n n - - pipeflags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)bsmtp unix - n n - - pipeflags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipientscalemail-backend unix - n n - 2 pipeflags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}mailman unix - n n - - pipeflags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py${nexthop} ${user}EOF
# 5. 重建别名数据库echo "5. 重建别名数据库..."echo "root: $(whoami)" | sudo tee /etc/aliasessudo newaliases
# 6. 检查配置语法echo "6. 检查配置语法..."sudo postfix checkif [ $? -eq 0 ]; thenecho "✅ 配置文件语法正确"elseecho "❌ 配置文件有错误,请查看上面的错误信息"exit 1fi
# 7. 启动Postfixecho "7. 启动Postfix服务..."sudo systemctl start postfix
# 8. 测试邮件发送echo "8. 测试邮件发送..."echo "全新配置测试 $(date)" | mail -s "全新配置测试" root
# 9. 检查状态echo "9. 检查服务状态..."sudo systemctl status postfix --no-pager | head -10
echo "10. 检查端口监听..."sudo netstat -tlnp | grep :25
echo "=== 配置重写完成 ==="echo "现在邮件系统应该稳定工作了。"echo "如果需要SSL,请稍后逐步添加配置。"
🚀 快速诊断为什么发邮件会死机
#!/bin/bashecho "=== 发邮件死机深度诊断 ==="
# 1. 检查系统负载echo "1. 系统负载历史:"uptimesar -q 1 3 2>/dev/null || echo "sar未安装"
# 2. 检查内存使用模式echo -e "\n2. 内存使用模式:"vmstat 1 3
# 3. 检查I/O等待echo -e "\n3. I/O等待状态:"iostat -x 1 3 2>/dev/null || echo "iostat未安装"
# 4. 检查进程限制echo -e "\n4. 进程限制:"cat /proc/sys/kernel/pid_maxcat /proc/sys/kernel/threads-max
# 5. 模拟发送大量邮件测试echo -e "\n5. 模拟压力测试(少量邮件)..."echo "警告:这将发送5封测试邮件"for i in {1..5}; doecho "压力测试邮件 $i" | mail -s "压力测试 $i" root &echo " 已启动邮件 $i"sleep 0.5done
# 等待发送完成wait
# 6. 检查邮件队列echo -e "\n6. 邮件队列状态(等待10秒)..."sleep 10mailq
# 7. 检查系统状态echo -e "\n7. 发送后的系统状态:"top -bn1 | head -20
echo -e "\n=== 诊断完成 ==="echo "如果这个测试就导致死机,说明系统非常敏感。"echo "建议使用外部SMTP服务或exim4。"