「玄関」と「通用口」を正しく使い分ける
こんにちは!「リナックス先生」です。
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番) の開放
暗号化に対応したサービス名 imaps と pop3s を指定します。
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つです。
- 緩和申請を行う:
VPS業者によっては、サポートに申請することで25番ポートのブロックを解除してくれる場合があります(固定IP契約などの条件あり)。 - リレーサーバーを使う:
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はこちら。


コメント