SH脚本:(注意:不要直接在终端中粘贴了PHP代码,否则会导致错误。PHP代码应该在PHP解释器中运行,而不是在bash中。先创建一个PHP文件,然后运行它。)

cat > /tmp/clean_reinstall_mail.sh << 'EOF'
#!/bin/bash
echo "=== 完全干净重装邮件系统 ==="
read -p "确定要完全重装邮件系统吗?(y/N): " -r
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "已取消"
exit 1
fi

echo "开始时间: $(date)"

# 1. 完全停止并移除
echo "1. 完全移除现有邮件系统..."
sudo systemctl stop exim4 postfix dovecot saslauthd 2>/dev/null
sudo 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/sasl2
sudo rm -rf /var/spool/exim4 /var/spool/postfix /var/lib/exim4 /var/lib/dovecot
sudo 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 client
localhost
25
localhost
BSMTP

# 6. 创建简单的sendmail包装器
echo "6. 创建sendmail包装器..."
sudo tee /usr/sbin/sendmail << 'SENDMAIL'
#!/bin/bash
# Simple sendmail wrapper using bsmtp or direct SMTP
if [ -f /usr/bin/bsmtp ]; then
/usr/bin/bsmtp "$@"
else
# Fallback to direct delivery
cat > /tmp/mail_$(date +%s).txt
echo "邮件已保存到 /tmp/mail_*.txt"
fi
SENDMAIL

sudo chmod +x /usr/sbin/sendmail

# 7. 配置PHP使用这个sendmail
echo "7. 配置PHP..."
for phpini in $(find /etc/php -name "php.ini" 2>/dev/null); do
sudo 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. 如果还是不行,使用外部SMTP
echo -e "\n9. 外部SMTP备选方案..."
cat > /tmp/external_smtp_fix.sh << 'EXTERNAL'
#!/bin/bash
echo "配置使用外部SMTP..."
sudo apt-get install -y ssmtp 2>/dev/null

# 配置ssmtp使用外部服务器(如Gmail)
sudo tee /etc/ssmtp/ssmtp.conf << 'SSMTP'
# 使用外部SMTP服务器
mailhub=smtp.gmail.com:587
AuthUser=该 Email 地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。
AuthPass=你的应用密码
UseSTARTTLS=YES
FromLineOverride=YES
hostname=localhost
SSMTP

sudo ln -sf /usr/sbin/ssmtp /usr/sbin/sendmail
echo "外部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.sh
sudo /tmp/clean_reinstall_mail.sh


登陆