#!/bin/bash ############################################################## # 参数占位(请根据实际情况替换) # 注意事项:请在执行前确认所有参数均被正确替换 ############################################################## MAIL_DOMAIN="{{your-mail-domain.com}}" # 邮件域名(如:example.com) MAIL_IP="{{your-server-ip}}" # 邮件服务器IP地址 ADMIN_EMAIL="{{admin@your-domain.com}}" # 管理员邮箱(用于Postfix收件) USER_NAME="{{username}}" # 系统用户账号(用于邮箱存储) USER_PASSWORD="{{password}}" # 用户密码 WEBROOT_PATH="{{/var/www/html}}" # Certbot使用HTTP验证的网站目录 ############################################################## # 初始配置 ############################################################## echo "==> 开始初始化..." # 预检测 echo ">> 检查root权限..." if [ "$(id -u)" != "0" ]; then echo "请使用root权限执行脚本" >&2 exit 1 fi # 更新系统 echo ">> 更新软件源..." apt update && apt upgrade -y # 安装必要组件 echo ">> 安装Postfix/Dovecot..." apt install -y postfix mailutils dovecot-core dovecot-imapd dovecot-lmtpd openssl certbot echo ">> 初始配置完成" ############################################################## # 配置Postfix邮件服务器 ############################################################## echo "==> 配置Postfix..." # 配置Postfix主配置文件 cat > /etc/postfix/main.cf <> Postfix基础配置完成" ############################################################## # 配置邮箱用户与域名映射 ############################################################## echo "==> 创建虚拟邮箱配置..." # 创建邮箱存储目录 mkdir -p /var/mail/vhosts/$MAIL_DOMAIN chown -R vmail:vmail /var/mail # 创建虚拟别名(管理员收件) echo "$ADMIN_EMAIL" > /etc/postfix/virtual # 创建用户邮箱映射(示例用户) echo "user1@example.com $MAIL_DOMAIN/user1/" > /etc/postfix/vmailbox # 生成哈希数据库 postmap /etc/postfix/virtual postmap /etc/postfix/vmailbox echo ">> 邮箱账户配置完成" ############################################################## # Dovecot 配置 ############################################################## echo "==> 配置Dovecot..." # 创建主配置 cat > /etc/dovecot/dovecot.conf < /etc/dovecot/conf.d/10-master.conf <> Dovecot配置完成" ############################################################## # 获取SSL证书(Let's Encrypt) ############################################################## echo "==> 申请SSL证书..." if [ ! -d "/etc/letsencrypt/live/$MAIL_DOMAIN" ]; then certbot certonly --standalone --agree-tos --no-eff-email \ --email $ADMIN_EMAIL \ -d $MAIL_DOMAIN # 设置定时更新 (crontab -l ; echo "0 0 * * * certbot renew --quiet") | crontab - fi echo ">> SSL证书获取完成" ############################################################## # 防火墙配置 ############################################################## echo "==> 配置防火墙..." if ! systemctl is-active --quiet ufw; then ufw allow 'OpenSSH' ufw allow "$MAIL_IP"/4 ufw enable fi ufw allow 25/tcp # SMTP ufw allow 587/tcp # Submission ufw allow 465/tcp # SMTPS ufw allow 143/tcp # IMAP ufw allow 993/tcp # IMAPS ufw reload echo ">> 防火墙配置完成" ############################################################## # 启动服务并测试 ############################################################## echo "==> 启动服务..." systemctl restart postfix systemctl restart dovecot # 检查服务状态 systemctl status postfix systemctl status dovecot echo "--------------------" echo "部署完成,请验证服务:" echo "1. 检查端口 25/587/993 是否开放" echo "2. 发送测试邮件:echo \"测试邮件正文\" | mail -s \"测试标题\" $ADMIN_EMAIL" echo "3. 查看日志:tail -f /var/log/mail.log" echo "--------------------"