⚙️ scripts/07_server_mail.sh

← К панели 📁 Все скрипты 💾 Скачать
#!/bin/bash
# ============================================================
# Скрипт 07: Почтовый сервер (Postfix + Dovecot)
# Server 192.168.0.150
# Домен: kspai.ru
# ============================================================

set -e

echo "▶️  07. Почтовый сервер..."
echo ""

# ─── 1. Установка пакетов ─────────────────────────────────
echo "📦 Установка Postfix + Dovecot..."

# Preseed — чтобы не задавало вопросов
echo "postfix postfix/main_mailer_type select Internet Site" | sudo debconf-set-selections
echo "postfix postfix/mailname string mail.kspai.ru" | sudo debconf-set-selections

sudo DEBIAN_FRONTEND=noninteractive apt install -y \
    postfix postfix-pcre \
    dovecot-core dovecot-imapd dovecot-pop3d \
    mailutils opendkim opendkim-tools

# ─── 2. Настройка Postfix ─────────────────────────────────
echo "⚙️  Настройка Postfix..."

sudo postconf -e "myhostname = mail.kspai.ru"
sudo postconf -e "mydomain = kspai.ru"
sudo postconf -e "myorigin = \$mydomain"
sudo postconf -e "inet_interfaces = all"
sudo postconf -e "inet_protocols = ipv4"
sudo postconf -e "mydestination = \$myhostname, localhost.\$mydomain, localhost, \$mydomain"
sudo postconf -e "mynetworks = 127.0.0.0/8, 192.168.0.0/24"
sudo postconf -e "home_mailbox = Maildir/"
sudo postconf -e "smtpd_tls_cert_file = /etc/letsencrypt/live/mail.kspai.ru/fullchain.pem"
sudo postconf -e "smtpd_tls_key_file = /etc/letsencrypt/live/mail.kspai.ru/privkey.pem"
sudo postconf -e "smtpd_tls_security_level = may"
sudo postconf -e "smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1"
sudo postconf -e "smtpd_use_tls = yes"

# ─── 3. Настройка Dovecot ─────────────────────────────────
echo "⚙️  Настройка Dovecot..."

sudo tee /etc/dovecot/conf.d/10-mail.conf > /dev/null << 'EOF'
mail_location = maildir:~/Maildir
namespace inbox {
  inbox = yes
}
protocols = imap pop3 lmtp
EOF

sudo tee /etc/dovecot/conf.d/10-auth.conf > /dev/null << 'EOF'
disable_plaintext_auth = no
auth_mechanisms = plain login
!include auth-system.conf.ext
EOF

sudo tee /etc/dovecot/conf.d/10-ssl.conf > /dev/null << 'EOF'
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.kspai.ru/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.kspai.ru/privkey.pem
ssl_min_protocol = TLSv1.2
EOF

sudo tee /etc/dovecot/conf.d/10-master.conf > /dev/null << 'EOF'
service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}
EOF

# ─── 4. Почтовые ящики ────────────────────────────────────
echo "👥 Создание пользователей..."
for user in admin info support; do
    if ! id "$user" &>/dev/null; then
        sudo useradd -m -s /bin/bash "$user"
        echo "$user:ChangeMe123!" | sudo chpasswd
        echo "   ✅ $user@kspai.ru / ChangeMe123!"
    fi
done

# ─── 5. Запуск ────────────────────────────────────────────
echo "🔄 Запуск служб..."
sudo systemctl restart postfix
sudo systemctl restart dovecot
sudo systemctl enable postfix dovecot

# ─── 6. Открываем порты ───────────────────────────────────
echo "🔥 Открытие портов..."
for port in 25 143 465 587 993 995; do
    sudo ufw allow $port/tcp 2>/dev/null || true
done

# ─── 7. Проверка ──────────────────────────────────────────
echo ""
echo "🔍 Статус:"
sudo systemctl is-active postfix && echo "   Postfix: ✅"
sudo systemctl is-active dovecot && echo "   Dovecot: ✅"
echo ""
echo "📋 Порты:"
sudo ss -tlnp | grep -E ":(25|143|465|587|993|995)" | awk '{print "   " $4}'

echo ""
echo "✅ 07_server_mail.sh завершён"
echo ""
echo "⚠️  Не забудьте:"
echo "   1. Пробросить порты на роутере (25,465,587,993,995)"
echo "   2. Настроить MX-запись kspai.ru → mail.kspai.ru"
echo "   3. Сменить пароли: passwd admin"