继续阅读完整内容
支持我们的网站,请点击查看下方广告
SH脚本:(注意:不要直接在终端中粘贴了PHP代码,否则会导致错误。PHP代码应该在PHP解释器中运行,而不是在bash中。先创建一个PHP文件,然后运行它。)
cat > /tmp/clean_reinstall_mail.sh << 'EOF'#!/bin/bashecho "=== 完全干净重装邮件系统 ==="read -p "确定要完全重装邮件系统吗?(y/N): " -rif [[ ! $REPLY =~ ^[Yy]$ ]]; thenecho "已取消"exit 1fi
echo "开始时间: $(date)"
# 1. 完全停止并移除echo "1. 完全移除现有邮件系统..."sudo systemctl stop exim4 postfix dovecot saslauthd 2>/dev/nullsudo pkill -9 exim4 postfix
sudo apt-get remove --purge -y \exim4* \postfix* \dovecot* \sasl2-bin \mailutils \sendmail* \2>/dev/null
sudo apt-get autoremove -y
# 2. 彻底清理echo "2. 彻底清理配置文件..."sudo rm -rf /etc/exim4 /etc/postfix /etc/dovecot /etc/sasl2sudo rm -rf /var/spool/exim4 /var/spool/postfix /var/lib/exim4 /var/lib/dovecotsudo rm -f /etc/mailname /etc/aliases /etc/aliases.db
# 3. 更新系统echo "3. 更新系统..."sudo apt-get update
# 4. 安装最简化的邮件工具echo "4. 安装最简化的邮件工具..."sudo apt-get install -y \mailutils \bsmtp \2>/dev/null
# 5. 配置bsmtp(极简SMTP客户端)echo "5. 配置bsmtp..."sudo tee /etc/bsmtp/bsmtp.conf << 'BSMTP'# BSMTP configuration - minimal SMTP clientlocalhost25localhostBSMTP
# 6. 创建简单的sendmail包装器echo "6. 创建sendmail包装器..."sudo tee /usr/sbin/sendmail << 'SENDMAIL'#!/bin/bash# Simple sendmail wrapper using bsmtp or direct SMTPif [ -f /usr/bin/bsmtp ]; then/usr/bin/bsmtp "$@"else# Fallback to direct deliverycat > /tmp/mail_$(date +%s).txtecho "邮件已保存到 /tmp/mail_*.txt"fiSENDMAIL
sudo chmod +x /usr/sbin/sendmail
# 7. 配置PHP使用这个sendmailecho "7. 配置PHP..."for phpini in $(find /etc/php -name "php.ini" 2>/dev/null); dosudo sed -i 's|^sendmail_path =.*|sendmail_path = /usr/sbin/sendmail -t -i|' "$phpini"done
# 8. 测试echo "8. 测试..."echo "完全重装测试 $(date)" | mail -s "完全重装测试" root 2>&1
# 9. 如果还是不行,使用外部SMTPecho -e "\n9. 外部SMTP备选方案..."cat > /tmp/external_smtp_fix.sh << 'EXTERNAL'#!/bin/bashecho "配置使用外部SMTP..."sudo apt-get install -y ssmtp 2>/dev/null
# 配置ssmtp使用外部服务器(如Gmail)sudo tee /etc/ssmtp/ssmtp.conf << 'SSMTP'# 使用外部SMTP服务器mailhub=smtp.gmail.com:587AuthUser=AuthPass=你的应用密码UseSTARTTLS=YESFromLineOverride=YEShostname=localhostSSMTP
sudo ln -sf /usr/sbin/ssmtp /usr/sbin/sendmailecho "外部SMTP配置完成"EXTERNAL
chmod +x /tmp/external_smtp_fix.sh
echo -e "\n=== 完全重装完成 ==="echo "如果邮件仍然不能工作,建议:"echo "1. 使用外部SMTP服务"echo "2. 检查系统完整性"echo "3. 考虑系统重装"EOF
chmod +x /tmp/clean_reinstall_mail.shsudo /tmp/clean_reinstall_mail.sh