メールサーバ構築 2025 AlamaLinux9

メールのサーバの構築において注意すべき項目はいくつもあるが、セキュリティを考慮すると送信時のSMTP認証で利用するパスワードの扱いおよびPOP時に利用する各アカウントのパスワードだ。GmailのようにPOP認証がそのままSMTP認証であるPAM形(LOGIN)形式でも良かったが、企業向けの場合共通のパスワードを設定し1年に一度などポリシーに従って適宜変更しながら運用することが多いだろう。

メールサーバ構築において一般的なプロトコル

別途SMTP配送の仕組みについては別記事を参照してください。「SMTP配送の仕組み Postfix

名前ポート番号暗号化方法概要
POP3110平文 or STARTTLS古いが一部対応あり
POP3S995SSL/TLS(最初から暗号化)現在の標準
SMTP(通常)25平文 or STARTTLS中継用・OP25Bで使えないこと多い
Submission(SMTP-AUTH)587STARTTLS現在の標準(クライアント用)
SMTPS465SSL/TLS(最初から暗号化)実は「非標準」から復活した方式

年々セキュリティは変化しており、メールサーバを構築する上でのセキュリティ対策は異なります。2025年現在、一般的なメールサーバの推奨構成は次のようになります。さらにSPF / DKIM / DMARC といった技術も必ず導入しましょう。

用途推奨ポート理由
メール送信587 (SMTP with STARTTLS)RFC 6409 で標準化、現在の主流
または送信465 (SMTPS)一部クライアントで安定(Appleなど)
メール受信995 (POP3S) or 993 (IMAPS)最初から暗号化、安全で確実

ちなみに、Google の公式情報によればこうなっています。

プロトコルポート状況
POP3S995✅ 利用可(要有効化)
SMTP(Submission)587 + STARTTLS✅ 利用可
SMTPS465 + SSL✅ 利用可
POP3 (110)❌ 利用不可(Gmailでは非対応)
SMTP (25)❌ 利用不可(OP25B対策のため)

メールサーバ構築でSMTP認証をどうするか

Dovecot + パスワードファイル方式

✅ Dovecot + パスワードファイル方式特長

  • sasldb より扱いやすく、柔軟(複数ユーザー対応、Dovecot 標準)
  • OSユーザーを作らなくて済む
  • 簡単なテキストファイル(passwd-file)で管理可能

✅ Dovecot + パスワードファイル方式設定手順(最小構成)

1. 仮想ユーザー用パスワードファイルを作成
mkdir -p /etc/dovecot/users
vi /etc/dovecot/users/passwd

smtpauth:{PLAIN}yourpassword
or
smtpauth:{SHA512-CRYPT}$6$KCxZXST9i3K5aaj9$aiJc0Di6xwnDkByZZ1sQGra6TweewMzi.KqiiiJ9IHAQCIlAJrlqpypbBCx8UwA7.mLwIFUOAib.AehHb60km0

SHAパスワードを作成するコマンド
doveadm pw -s SHA512-CRYPT

中身の例(ID: smtpauth / PW: yourpassword)


2. 10-auth.confpassdb/userdb を以下のように変更
vi /etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = no
auth_mechanisms = plain
!include auth-passwdfile.conf.ext #コメントを外す

useradd -r -u 200 -g mail -d /var/mail -s /sbin/nologin vmail

ここでは、SMTPのためユーザを作成しますが、認証用IDと同じにする必要はありません。vmail固定で良いと思います。

vi /etc/dovecot/conf.d/auth-passwdfile.conf.ext

passdb {
  driver = passwd-file
  args = /etc/dovecot/users/passwd
}

passdb {
  driver = pam
}

userdb {
  driver = passwd
}

userdb {
  driver = static
  args = uid=200 gid=12 home=/var/mail/%d/%n
}


3. パーミッションの設定

chown dovecot:dovecot /etc/dovecot/users/passwd
sudo chmod 600 /etc/dovecot/users/passwd

4. Dovecotの設定と再起動

vi /etc/dovecot/conf.d/10-ssl.conf

ssl = yes
ssl_cert = </etc/letsencrypt/live/xxx.youdomain.jp/fullchain.pem
ssl_key = </etc/letsencrypt/live/xxx.youdomain.jp/privkey.pem

vi /etc/dovecot/conf.d/10-mail.con
mail_location = maildir:~/Maildir

vi /etc/dovecot/conf.d/10-master.conf
service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}

service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

service submission-login {
  inet_listener submission {
    #port = 587
  }
}

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}

service auth {
  #unix_listener auth-userdb {
  #  mode = 0600
  #  user = dovecot
  #  #group =
  #}

  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}

service auth-worker {
}

service dict {
  unix_listener dict {
    #mode = 0600
    #user =
    #group =
  }
}

systemctl restart dovecot

PostfixでSMTP認証をDovecotに行わせる

SMTP認証は送信時に利用するプロトコルですが、それをDovecotに行わせます。よって、POP3sと587ポートでの運用も可能なのです。

/etc/postfix/main.cf

smtpd_sasl_local_domain = $mydomain
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_authenticated_header = yes
smtpd_tls_auth_only = yes
smtputf8_enable = no
smtpd_tls_cert_file = /etc/letsencrypt/live/xxx.youdomain.jp/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/xxx.yourdomain.jp/privkey.pem
smtpd_use_tls = yes
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
smtp_tls_CApath = /etc/ssl/certs

ここで指定した/etc/ssl/certs/ca-bundle.crt ファイルが無い場合は作成する必要があります。Let's Encrypt の証明書は “自分のサーバー用” なので、Postfixが相手サーバーの証明書を検証するには不十分です。相手のメールサーバーが使っている証明書がどのCA(例えばLet's Encrypt、DigiCert、GlobalSignなど)発行か分からないため、一般的に複数のCA証明書がまとめられた ca-certificates.crt が必要です。つまり、Postfixが外部サーバーの証明書を検証するための “信頼できる認証局リスト” が ca-certificates パッケージによって提供されています。

dnf reinstall ca-certificates
update-ca-trust force-enable
update-ca-trust extrac

/etc/postfix/master.conf

smtp      inet  n       -       n       -       -       smtpd
submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
smtps     inet  n       -       n       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_tls_cert_file=/etc/letsencrypt/live/aq4.aquila.jp/fullchain.pem
  -o smtpd_tls_key_file=/etc/letsencrypt/live/aq4.aquila.jp/privkey.pem
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

メーラーの設定

たとえばBecky! Internet Mailを利用したメールの送受信の場合、次のような設定でセキュリティを担保しつつメールの送受信が可能となる。

基本設定:
POP3サーバ(受信):FQDN ・・・ POP3Sにチェック
SMTPサーバ(送信):FQDN ・・・ SMTPSにチェック
ユーザID:UNIXアカウント
パスワード:上記のパスワード
認証方式:標準

詳細:
SMTP:465
POP3:995
IMAP4:143
☑ SMTP認証 ☐ OAuth2を使用
☐ CRAM-MD5 ☐ LOGIN ☑PLAIN
ユーザID: smtpauth
パスワード: youpassword

SS/TLS関連
受信用:デフォルト
送信用:デフォルト
☐ 証明書を検証しない
☑ クライアントの証明書を使用

☐ POP before SMTPを使用
☑ ESMTPを使用


技術的セキュリティ対策

最後に、メールサーバを構築するうえで、メールの送受信におけるセキュリティ対策は、情報漏洩・なりすまし・改ざん・スパム・ウイルスなどのリスクを防ぐために非常に重要です。以下に、技術的対策・運用面・利用者教育の観点から、総合的にまとめます。

1. 通信経路の暗号化

  • SMTP over TLS(STARTTLS) / SMTPS(465)
  • IMAPS(993) / POP3S(995)
  • → メールサーバー間やクライアントとの通信を暗号化し、盗聴や改ざんを防止

2. 認証とアクセス制御

  • SMTP認証(SASL)
    → なりすましや不正中継の防止
  • 強力なパスワードポリシーの適用
  • 二要素認証(2FA)(Webメールや管理画面)

3. 送信ドメイン認証技術(SPF / DKIM / DMARC)

  • SPF(Sender Policy Framework)
    → 送信元IPの正当性をチェック
  • DKIM(DomainKeys Identified Mail)
    → メールに電子署名を付加し改ざん検出
  • DMARC(Domain-based Message Authentication, Reporting and Conformance)
    → SPF/DKIMの結果をもとにメールの扱いを定義

4. ウイルス・マルウェア対策

  • メールサーバーにアンチウイルス/アンチマルウェアソフトを導入
  • 添付ファイルのスキャン

5. スパム対策

  • DNSBL(ブラックリスト)/ RBL
  • Bayesian フィルタリング
  • SPF/DKIM/DMARCの活用

6. 添付ファイルと本文のフィルタリング

  • 危険な拡張子(.exe, .js など)のブロック
  • 添付ファイルを自動でパスワード付きZipに変換(パスワード通知は別送)

7. ログ監視・アラート

  • ログ(送受信ログ、認証ログなど)を記録し、異常があれば即通知