Ubuntu22.04にPostfixをインストールして設定する方法
序章
Postfix は、Linuxシステムで電子メールをルーティングおよび配信するために使用できる人気のあるオープンソースのメール転送エージェント(MTA)です。 インターネット上の約25% ofのパブリックメールサーバーがPostfixを実行していると推定されています。
このガイドでは、Ubuntu22.04サーバーにPostfixをインストールして設定する方法を学びます。 次に、[X13X]メールクライアントとも呼ばれるメールユーザーエージェント(MUA)であるs-nail
をインストールして、Postfixがメールを正しくルーティングできることをテストします。
このチュートリアルの目的は、いくつかの最低限の電子メール機能だけでPostfixをすばやく起動して実行できるようにすることであることに注意してください。 このガイドの終わりまでにフル機能の電子メールサーバーを使用することはできませんが、開始に役立つこのようなセットアップの基本的なコンポーネントがいくつかあります。
前提条件
独自のメールサーバーの設定と保守は複雑で時間がかかります。 ほとんどのユーザーにとって、代わりに有料のメールサービスに依存する方が現実的です。 独自のメールサーバーの実行を検討している場合は、この記事を確認して、実行したくない理由を確認することをお勧めします。
このガイドに従ってPostfixをインストールして設定することが確実な場合は、最初に次のものが必要です。
- Postfixメールサーバーとして機能するUbuntu22.04を実行しているサーバー。 このサーバーには、
sudo
権限を持つroot以外のユーザーと、UFWで構成されたファイアウォールが必要です。 Ubuntu22.04初期サーバーセットアップガイドに従ってこれをセットアップできます。 - Ubuntu22.04サーバーを指す完全修飾ドメイン名。 DigitalOceanでドメイン名を設定する際のヘルプは、ドメインとDNSネットワークのドキュメントに従ってください。 外部の場所からメールにアクセスする場合は、メールサーバーを指すMXレコードもあることを確認する必要があることに注意してください。
このチュートリアルは、FQDNがmail.example.com
のホストを構成していることを前提としていることに注意してください。 必要に応じて、example.com
またはmail.example.com
を変更して、自分のFQDNを反映させてください。
ステップ1—Postfixをインストールする
PostfixはUbuntuのデフォルトのリポジトリに含まれているので、APTでインストールできます。
まず、ローカルのapt
パッケージキャッシュを更新します。
sudo apt update
次に、次のコマンドを使用してpostfix
パッケージをインストールします。 ここでは、DEBIAN_PRIORITY=low
環境変数をこのインストールコマンドに渡すことに注意してください。 これにより、インストールプロセスで、いくつかの追加オプションを構成するように求められます。
sudo DEBIAN_PRIORITY=low apt install postfix
このインストールプロセスにより、一連のインタラクティブなプロンプトが開きます。 このチュートリアルでは、次の情報を使用してプロンプトに入力します。
- メール構成の一般的なタイプ?:これはインフラストラクチャのニーズに一致するため、インターネットサイトを選択します。
- システムメール名:これは、アドレスのアカウント部分のみが指定されている場合に有効な電子メールアドレスを作成するために使用されるベースドメインです。 たとえば、サーバーのホスト名が
mail.example.com
であるとします。 システムメール名をexample.com
に設定して、ユーザー名user1
を指定すると、Postfixがアドレスuser1@example.com
を使用するようにすることができます。 - ルートおよびポストマスターのメール受信者:これは、
root@
およびpostmaster@
宛てのメールを転送するLinuxアカウントです。 これにはプライマリアカウントを使用してください。 この例の場合、sammyです。 - メールを受け入れるその他の宛先:これは、このPostfixインスタンスが受け入れるメールの宛先を定義します。 このサーバーが受信を担当する他のドメインを追加する必要がある場合は、ここに追加してください。 それ以外の場合は、デフォルトで十分です。
- メールキューで同期更新を強制しますか?:ジャーナルファイルシステムを使用している可能性があるため、ここでいいえを受け入れます。
- ローカルネットワーク:これは、メールサーバーがメッセージを中継するように構成されているネットワークのリストです。 デフォルトはほとんどのシナリオで機能します。 ただし、変更する場合は、ネットワーク範囲を非常に制限するようにしてください。
- メールボックスサイズ制限:これを使用してメッセージのサイズを制限できます。
0
に設定すると、サイズ制限が無効になります。 - ローカルアドレス拡張文字:これは、アドレスの通常の部分を拡張から分離するために使用できる文字です(動的エイリアスの作成に使用されます)。 このチュートリアルでは、デフォルトの
+
が機能します。 - 使用するインターネットプロトコル:PostfixがサポートするIPバージョンを制限するかどうかを選択します。 このチュートリアルでは、allを選択します。
明確にするために、これらはこのガイドで使用される設定です:
- メール構成の一般的なタイプ?:インターネットサイト
- システムメール名:
example.com
(mail.example.com
ではありません) - ルートおよびポストマスターのメール受信者:プライマリLinuxアカウントのユーザー名(この例では sammy )
- ' のメールを受け入れるその他の宛先:
$myhostname, example.com, mail.example.com, localhost.example.com, localhost
- メールキューで同期更新を強制しますか?:いいえ
- ローカルネットワーク:
127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
- メールボックスのサイズ制限:
0
- ローカルアドレス拡張文字:
+
- 使用するインターネットプロトコル:すべて
注:これらの設定を変更するために戻る必要がある場合は、次のように入力してください。
sudo dpkg-reconfigure postfix
プロンプトには、以前の応答が事前に入力されています。
サービスを再開するように求められたら、デフォルトを受け入れてOK
を選択します。
インストールプロセスが完了すると、Postfix設定にいくつかの更新を行う準備が整います。
ステップ2—Postfix設定を変更する
これで、パッケージのインストールプロセスで要求されなかったいくつかの設定を調整できます。 Postfixの構成設定の多くは、/etc/postfix/main.cf
ファイルで定義されています。 このファイルを直接編集するのではなく、Postfixのpostconf
コマンドを使用して、設定を照会または設定できます。
まず、root以外のUbuntuユーザーのメールボックスの場所を設定します。 このガイドでは、 Maildir 形式を使用します。この形式では、メッセージが個々のファイルに分割され、ユーザーの操作に基づいてディレクトリ間で移動されます。 このガイドで説明されていない代替オプションは、 mbox 形式で、すべてのメッセージを1つのファイルに保存します。
home_mailbox
変数をMaildir/
に設定します。 後で、ユーザーのホームディレクトリ内にその名前でディレクトリ構造を作成します。 次のように入力して、home_mailbox
を構成します。
sudo postconf -e 'home_mailbox= Maildir/'
次に、virtual_alias_maps
テーブルの場所を設定します。このテーブルは、任意の電子メールアカウントをLinuxシステムアカウントにマップします。 次のコマンドを実行します。これにより、テーブルの場所が/etc/postfix/virtual
という名前のハッシュデータベースファイルにマップされます。
sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
main.cf
ファイルで仮想マップファイルの場所を定義したので、ファイル自体を作成し、Linuxシステム上のユーザーアカウントへの電子メールアカウントのマッピングを開始できます。 お好みのテキストエディタでファイルを作成します。 この例では、nano
を使用します。
sudo nano /etc/postfix/virtual
電子メールを受け入れるアドレスをリストし、その後に空白とそのメールの配信先となるLinuxユーザーをリストします。
たとえば、contact@example.com
およびadmin@example.com
で電子メールを受け入れ、それらの電子メールを sammy Linuxユーザーに配信したい場合は、ファイルを設定できます。このような:
/ etc / postfix / virtual
contact@example.com sammy admin@example.com sammy
すべてのアドレスを適切なサーバーアカウントにマップしたら、ファイルを保存して閉じます。 nano
を使用した場合は、CTRL + X
、Y
、ENTER
の順に押してください。
次のように入力して、マッピングを適用します。
sudo postmap /etc/postfix/virtual
Postfixプロセスを再起動して、すべての変更が適用されていることを確認します。
sudo systemctl restart postfix
前提条件の初期サーバーセットアップガイドに従っていると仮定すると、UFWを使用してファイアウォールを構成していることになります。 このファイアウォールは、サーバー上のサービスへの外部接続が明示的に許可されていない限り、それらの接続をデフォルトでブロックするため、Postfixの例外を許可するファイアウォールルールを追加する必要があります。
次のように入力して、サービスへの接続を許可できます。
sudo ufw allow Postfix
これで、Postfixが構成され、外部接続を受け入れる準備が整いました。 ただし、メールクライアントでテストする準備はまだできていません。 クライアントをインストールし、それを使用してサーバーに配信されるメールを操作する前に、Ubuntuサーバーの設定にいくつかの変更を加える必要があります。
ステップ3—メールクライアントのインストールとMaildir構造の初期化
配信されるメールを操作するために、このステップではs-nail
パッケージをインストールするプロセスを順を追って説明します。 これは、Maildir形式を正しく処理できるBSDxmail
クライアントの機能豊富なバリアントです。
ただし、クライアントをインストールする前に、MAIL
環境変数が正しく設定されていることを確認することをお勧めします。 s-nail
はこの変数を探して、ユーザーのメールの場所を特定します。
アカウントへのアクセス方法に関係なく、MAIL
変数が設定されていることを確認するには、ssh
、su
、su -
、sudo
のいずれかを使用します。 ]たとえば、/etc/bash.bashrc
ファイルで変数を設定し、/etc/profile.d
内のファイルに追加して、デフォルトですべてのユーザーに設定されていることを確認する必要があります。
これらのファイルに変数を追加するには、次のように入力します。
echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh
変数を現在のセッションに読み込むには、/etc/profile.d/mail.sh
ファイルを入手します。
source /etc/profile.d/mail.sh
これが完了したら、APTを使用してs-nail
電子メールクライアントをインストールします。
sudo apt install s-nail
クライアントを実行する前に、調整する必要のある設定がいくつかあります。 エディタで/etc/s-nail.rc
ファイルを開きます。
sudo nano /etc/s-nail.rc
ファイルの下部に、次のオプションを追加します。
/etc/s-nail.rc
. . . set emptystart set folder=Maildir set record=+sent
これらの行の機能は次のとおりです。
set emptystart
:受信トレイが空の場合でもクライアントを開くことができますset folder=Maildir
:Maildir
ディレクトリを内部folder
変数に設定しますset record=+sent
は、folder
変数として設定されているディレクトリ(この場合はMaildir
)内に送信メールを保存するためのsent
mboxファイルを作成します。
終了したら、ファイルを保存して閉じます。 これで、システムのMaildir構造を初期化する準備が整いました。
ホームディレクトリ内にMaildir構造を作成する簡単な方法は、s-nail
コマンドを使用して自分自身に電子メールを送信することです。 sent
ファイルは、Maildirが作成された後にのみ使用可能になるため、この最初の電子メールの書き込みを無効にする必要があります。 これを行うには、-Snorecord
オプションを渡します。
s-nail
コマンドに文字列をパイプしてメールを送信します。 Linuxユーザーを受信者としてマークするようにコマンドを調整します。
echo 'init' | s-nail -s 'init' -Snorecord sammy
注:次の応答を受け取る可能性があります:
OutputCan't canonicalize "/home/sammy/Maildir"
これは正常であり、この最初のメッセージを送信するときにのみ表示される場合があります。
~/Maildir
ディレクトリを探すことで、ディレクトリが作成されたことを確認できます。
ls -R ~/Maildir
ディレクトリ構造が作成され、新しいメッセージファイルが~/Maildir/new
ディレクトリにあることがわかります。
Output/home/sammy/Maildir/: cur new tmp /home/sammy/Maildir/cur: /home/sammy/Maildir/new: 1650294586.Vfc01I7e11dM993645.mail.example.com /home/sammy/Maildir/tmp:
ディレクトリ構造が作成されたので、送信したinit
メッセージを表示し、外部の電子メールアドレスにメッセージを送信して、s-nail
クライアントをテストする準備が整いました。
ステップ4—クライアントのテスト
クライアントを開くには、s-nail
コマンドを実行します。
s-nail
コンソールに、init
メッセージが待機している基本的な受信トレイが表示されます。
Outputs-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com 2022-04-18 15:09 14/452 init
ENTER
を押して、メッセージを表示します。
Output[-- Message 1 -- 14 lines, 452 bytes --]: Date: Mon, 18 Apr 2022 15:09:46 +0000 To: sammy@example.com Subject: init Message-Id: <20220418150946.EE6897E11A@@mail.example.com> From: sammy@example.com init
h
と入力してから、ENTER
と入力すると、メッセージリストに戻ることができます。
h
Output>R 1 sammy@example.com 2022-04-18 15:09 14/452 init
メッセージの状態がR
になり、読み取られたことを示していることに注意してください。
このメッセージはあまり役に立たないので、d
を押してから、ENTER
を押すと削除できます。
d
ターミナルに戻るには、q
と入力してから、ENTER
と入力します。
q
最後のテストとして、s-nail
がメールメッセージを正しく送信できるかどうかを確認します。 これを行うには、前の手順で送信したinit
メッセージの場合と同様に、テキストファイルの内容をs-nail
プロセスにパイプ処理できます。
テキストエディタでテストメッセージを書くことから始めます。
nano ~/test_message
中に、送信したいテキストを入力します。
〜/ test_message
Hello, This is a test. Please confirm receipt!
メッセージを書き込んだ後、ファイルを保存して閉じます。
次に、cat
コマンドを使用して、メッセージをs-nail
プロセスにパイプします。 これらのオプションを使用する次の例を使用して、これを行うことができます。
-s
:これは電子メールメッセージの件名を定義します-r
:電子メールの「From:」フィールドへのオプションの変更。 デフォルトでは、ログインしているLinuxユーザーがこのフィールドに入力するために使用されます。-r
オプションを使用すると、/etc/postfix/virtual
ファイルで定義したアドレスなどの有効なアドレスでこれをオーバーライドできます。 説明のために、次のコマンドはcontact@example.com
を使用します
また、user@email.com
をアクセス可能な有効なメールアドレスに変更してください。
cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example.com user@email.com
次に、メッセージの送信先の電子メールアドレスの受信ボックスに移動します。 あなたはあなたのメッセージがほとんどすぐにそこで待っているのを見るでしょう。
注:メッセージが受信トレイにない場合は、迷惑メールフォルダに配信されている可能性があります。
s-nail
クライアント内で送信済みメッセージを表示できます。 インタラクティブクライアントを再起動します。
s-nail
電子メールクライアントから、次のように入力して送信済みメッセージを表示します。
file +sent
次のような出力が表示されます。
Output+[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 To contact@example.com 2022-04-18 15:12 10/211 Test email subject line
受信メールと同じコマンドを使用して、送信メールを管理できます。
結論
これで、Ubuntu22.04サーバーでPostfixが構成されました。 電子メールサーバーの管理は、新しいシステム管理者にとって難しい作業になる可能性がありますが、この構成では、開始するのに十分なMTA電子メール機能が必要です。