はじめに
Linuxでメールサーバを構築する為の手順を備忘録として残します。
ディストリビューションはRHEL、SMTPサーバはPostfixを使用します。
稼働環境はローカルネットワーク、SMTP認証なし、暗号化なし、SMTPプロトコル設定はデフォルトとします。
IMAP、POPサーバ(dovecot)については今回記載しません。
記載内容に相違がある場合はコメントにてお知らせください。
構築環境
OS:REHL8.8
パッケージ:Postfix 3.5.8
Firewalld通信許可
SMTP(25番)、SMTPS(465番)、smtp-submission(567番)の通信を許可します。本記事の構成では25番のみ使用しますが、暗号化通信を使用する場合の補足として465番、567番許可時のコマンドも記載します。
firewall-cmd --permanent --zone=public --add-service=smtp
firewall-cmd --permanent --zone=public --add-service=smtps
firewall-cmd --permanent --zone=public --add-service=smtp-submission
systemctl restart firewalld
Postfixインストール
SMTPサーバ機能を要するPostfixパッケージをインストールします
dnf install postfix
コンフィグ構成
- /etc/postfix/main.cf
SMTPサーバの基本設定はこちらを編集します。 - /etc/postfix/master.cf
SMTPサーバの詳細設定はこちらを編集します。
SMTPS(465番)、smtp-submission(567番)を使用する場合は編集が必要です。
当記事では編集しません。
コンフィグ設定
基本的な設定箇所を記載します。
サーバ設定、稼働環境に沿った設定を指定してください。
項目 | 値 |
---|---|
myhostname | 自サーバのホスト名を定義します。 |
mydomain | 自サーバのドメイン名を定義します。 |
myorigin | 自サーバから配送されるメールのドメイン部を指定します。 |
inet_interfaces | メール受信するインタフェースを指定します。 |
inet_protocols | メール送受信に使用するIPプロトコルをIPv4、IPv6から指定します。 |
mydestination | ローカル配送(受信)するドメインを指定します。 |
mynetworks | 信頼できるネットワークを指定します。MUAが動作するクライアント等のネットワーク帯を指定してください。 |
relay_domains | リレーを許可するドメインを指定します。 |
relayhost | リレー先ホストを指定します。ブランクの場合、MXレコードを参照しインターネット側に中継します。ローカルネットワークで動作させたい場合は、メールサーバをもう1台構築し指定します。 |
home_mailbox | ローカル配送するメールの保存形式。Maildir/を指定すると、ユーザのホームディレクトリ配下にMaildirディレクトリが作成され、メールファイルが個別に保存されます。 |
ユーザ作成
メールサーバ内にユーザを作成します。
[ユーザ名@自サーバのドメイン]がメールアドレスとなります。
adduser "ユーザ名"
passwd "ユーザ名"
メール処理フロー
Postfixがメールを受け取った後の処理について記載します。
-
ローカル配送
mydestinationで指定したドメイン宛のメールを受信すると、自サーバへローカル配送します。 -
メール中継
許可された設定のみ、[relayhost]へメールを中継します。
1. [mynetworks]で指定されたネットワークからのメールを許可します。
2. [mynetworks]以外からメールが送信された場合は、[relay_domains]で指定された宛先ドメインへのメールのみ許可します。
3. それ以外のメールは中継せず、接続を拒否します。
動作確認
Telnet接続し、CLI上からメールを送信します。
ローカル接続以外の場合は、Telnet接続できるようにFirewalld設定は変更してください。
telnet SMTPサーバのIPアドレス 25
MAIL FROM: Envelope Fromを指定
RCPT TO: Envelope Toを指定
DATA
From: Fromメールアドレスを指定
To: Toメールアドレスを指定
Subject: 件名を指定
本文を記載
.
quit "Telnet切断”
ユーザのメールディレクトリにメールが保存されたことを確認します。
ls -l /home/ユーザ名/Maildir/new/ "新規メール保存ディレクトリ"
ls -l /home/ユーザ名/Maildir/new/ "参照済メール保存ディレクトリ"