【Firewalld講座 第7回】メールサーバーのポート開放術!SMTP/IMAP/POP3の役割とスパム踏み台を防ぐ鉄則

「玄関」と「通用口」を正しく使い分ける

こんにちは!「リナックス先生」です。
Firewalld講座、第7回へようこそ。

前回はWebサーバーの設計を行いましたが、今回はインターネットの最重要インフラの一つ、「メールサーバー」の設計に挑みます。
メールサーバー構築は、Linuxエンジニアにとっての「鬼門」と呼ばれるほど知識が必要です。

「とりあえず全部のポートを開ければいいや」という甘い考えは、メールサーバーでは命取りです。
あなたのサーバーがスパムメールの配信基地(踏み台)にされ、プロバイダから契約解除される…なんてことにならないよう、正しいポート制御を学びましょう。

コウ君

先生、メールの設定ってややこしいですよね…。
SMTPとかIMAPとかPOPとか、数字も25番だったり587番だったり。
結局、Firewalldでは何を開ければ正解なんですか?

リナックス先生

迷うのも無理はないわ。
メールは歴史が長い分、「昔の規格(平文)」と「今の規格(暗号化)」が混在しているの。
今日はプロトコルごとの役割を整理して、「今の時代に開けるべきポート」をはっきりさせましょう!

1. メールのプロトコルとポート番号まとめ

まずは、メールサーバーで使われる主要なポートとサービス名を整理します。
AlmaLinux 9(Firewalld)では、以下のサービス名が定義されています。

送信・転送用(SMTP系)

ポート サービス名 用途・解説 開放判断
25 smtp 【サーバー間転送】
他のメールサーバーからメールを受け取るためのポート。これを開けないとメールが届かない。
必須
587 smtp-submission 【メール投稿】
ユーザー(Outlookやスマホ)がメールを送る時に使うポート。認証必須。
必須
465 smtps 【レガシー暗号化】
昔の暗号化方式。現在は587番(STARTTLS)が主流だが、互換性のために開けることもある。
推奨

受信・閲覧用(IMAP/POP系)

ポート サービス名 用途・解説 開放判断
143 imap 【IMAP受信】
サーバー上のメールを見る。暗号化なしのため盗聴リスクあり。
非推奨
993 imaps 【IMAP暗号化】
SSL/TLSで暗号化されたIMAP。現代の標準。
必須
110 pop3 【POP受信】
メールをDLする。暗号化なしのため盗聴リスクあり。
非推奨
995 pop3s 【POP暗号化】
SSL/TLSで暗号化されたPOP。現代の標準。
必須
リナックス先生

ここがポイントよ。
110番や143番は、パスワードがそのままネット上を流れてしまう危険なポートなの。
Firewalldの設定で最初から閉じておけば、ユーザーに対して強制的に安全な接続(SSL)を使わせることができるわ。

2. 【実践】送信ポートの開放設定

それでは実際に設定していきましょう。
まずはメールを送る・受け取るためのSMTP周りからです。

2-1. SMTP (25番) の開放

外部のメールサーバー(GmailやYahooなど)からメールを受け取るために必須です。
これを public ゾーンに許可します。

sudo firewall-cmd --permanent --add-service=smtp

2-2. Submission (587番) の開放

あなたのサーバーのユーザー(社員や家族)が、スマホやPCからメールを送るための「投稿用ポスト」です。

sudo firewall-cmd --permanent --add-service=smtp-submission

2-3. SMTPS (465番) の開放(任意)

古いメーラーや、一部のプログラムからの送信に対応させる場合は開けておきます。
最近のPostfix設定では587番で暗号化も兼ねることが多いですが、開けておいて損はありません。

sudo firewall-cmd --permanent --add-service=smtps

3. 【実践】受信ポートの開放設定

次に、届いたメールを読むためのポートです。
ここでは「暗号化されたポート(SSL/TLS)のみを開ける」というセキュアな構成にします。

3-1. IMAPS (993番) と POP3S (995番) の開放

暗号化に対応したサービス名 imapspop3s を指定します。

sudo firewall-cmd --permanent --add-service=imaps
sudo firewall-cmd --permanent --add-service=pop3s

3-2. 非暗号化ポートは開けない!

あえて imap (143) と pop3 (110) は追加しません。
これにより、メーラー設定時に「SSLなし」を選択すると接続エラーになるため、ユーザーに正しい設定を促すことができます。

4. 設定の反映と確認

すべての設定が終わったら、リロードして反映させます。

sudo firewall-cmd --reload

現在の設定を確認してみましょう。

sudo firewall-cmd --list-services

▼理想的な実行結果

dhcpv6-client http https imaps pop3s smtp smtp-submission smtps ssh

このように、Web(http/https)、メール(smtp系/imaps/pop3s)、管理(ssh)が並んでいれば、汎用的なインターネットサーバーの完成です!

5. トラブルシューティング:OP25Bの壁

メールサーバー構築で避けて通れないのが、クラウド事業者による「OP25B(Outbound Port 25 Blocking)」です。

メールが送信できない!?

Firewalldの設定が完璧でも、自宅サーバーや一般的なVPS(ConoHa, さくら, AWSなど)からは、外部への25番ポート通信が最初からブロックされていることがほとんどです。
これはスパムメール送信を防ぐための業界全体のルールです。

解決策

Firewalld側で対処できる問題ではありませんが、インフラエンジニアとして知っておくべき対処法は2つです。

  1. 緩和申請を行う:
    VPS業者によっては、サポートに申請することで25番ポートのブロックを解除してくれる場合があります(固定IP契約などの条件あり)。
  2. リレーサーバーを使う:
    Postfixの設定で、メールの送信先を「プロバイダの指定するリレーサーバー(587番ポート経由)」に変更します。
    Firewalldとしては、外部への通信(Outbound)はデフォルトで許可されているため、特別な設定は不要です。

6. メールサーバーを守るための追加テクニック

メールサーバーは、Webサーバー以上に「パスワード総当たり攻撃(ブルートフォースアタック)」を受けやすいターゲットです。

Firewalld単体で防御するのは限界がありますが、将来的に導入すべきツールとして「Fail2Ban(フェイル・トゥ・バン)」という名前だけ覚えておいてください。
これは、「ログインに5回失敗したら、Firewalldを操作してそのIPを自動ブロックする」という連携ツールです。

第10回「リッチルール編」で、Firewalld単体で簡易的なブロックを行う方法も解説します。

まとめ:メールは「暗号化」が標準の時代

第7回では、メールサーバーに必要なポート設定を行いました。

  • SMTP (25): サーバー間通信のために必須。
  • Submission (587): ユーザーのメール送信のために必須。
  • IMAPS (993) / POP3S (995): メールの受信は必ず暗号化ポートを使う。
  • 110 / 143: 盗聴リスクがあるため、Firewalldで閉じておくのが優しさ。

これで、Webとメールという二大サービスが稼働するサーバーになりました。
しかし、Webアプリが複雑になると、バックエンドで「データベース(DB)」が必要になります。

次回(第8回)は、「データベース(MySQL/MariaDB)のセキュリティ設計」について解説します。
「DBのポート3306は、絶対にインターネットに公開してはいけない」。この鉄則を守りつつ、Webサーバーからだけ接続させるテクニックを学びましょう!

▼メールサーバー構築に挑戦できるVPS

メールサーバーは固定IPアドレスや逆引き設定など、ネットワークの知識が試される良い教材です。学習用として自由にポート設定がいじれるおすすめVPSはこちら。

【2026年最新】Linuxサーバー構築におすすめのVPS比較3選!現役エンジニアが速度とコスパで厳選
Linuxの勉強、まだ「自分のPC」でやって消耗していませんか?「Linuxを覚えたいけど、環境構築でエラーが出て先に進めない…」「VirtualBoxを入れたらパソコンが重くなった…」これは、Linux学習を始める9割の人がぶつかる壁です...

コメント