Ubuntu 22.04にPostfixをインストールおよび構成する方法

はじめに

Postfixは、Linuxシステム上でメールのルーティングと配信を行うために使用できる人気のあるオープンソースのメール転送エージェント(MTA)です。インターネット上の公開メールサーバーの約25%がPostfixを実行していると推定されています。

このガイドでは、Ubuntu 22.04サーバーにPostfixをインストールして設定する方法を学びます。その後、s-nailというメールユーザーエージェント(MUA)または電子メールクライアントとしても知られるツールをインストールして、Postfixがメールを正しくルーティングできるかどうかをテストします。

このチュートリアルの目標は、いくつかの基本的なメール機能のみを使用してPostfixを迅速に起動および実行できるようにすることです。このガイドの終わりまでに、完全な機能を備えたメールサーバーを持つことはありませんが、そのような設定の基本的な構成要素を得て、始めるのに役立ちます。

前提条件

自分自身のメールサーバーを設定して運用することは複雑で時間がかかります。ほとんどのユーザーにとって、代わりに有料のメールサービスに頼る方が実用的です。自分自身のメールサーバーを運用することを検討している場合は、こちらの記事を参照していただくことをお勧めします。

このガイドに従ってPostfixをインストールして設定することを検討している場合は、まず以下のものを準備する必要があります:

  • A server running Ubuntu 22.04 to function as your Postfix mail server. This server should have a non-root user with sudo privileges and a firewall configured with UFW. You can follow our Ubuntu 22.04 initial server setup guide to set this up.
  • A Fully Qualified Domain Name pointed at your Ubuntu 22.04 server. You can find help on setting up your domain name with DigitalOcean by following our Domains and DNS Networking documentation. Be aware that if you plan on accessing mail from an external location, you will need to make sure you have an MX record pointing to your mail server as well.

このチュートリアルでは、FQDNがmail.example.comであるホストを構成していると仮定しています。必要に応じて、example.comまたはmail.example.comを自分自身のFQDNに変更してください。

ステップ1 — Postfixのインストール

PostfixはUbuntuのデフォルトのリポジトリに含まれているため、APTを使用してインストールできます。

まず、ローカルのaptパッケージキャッシュを更新します:

  1. sudo apt update

次に、次のコマンドでpostfixパッケージをインストールします。ここでは、DEBIAN_PRIORITY=low環境変数をインストールコマンドに渡しています。これにより、インストールプロセスで追加のオプションを構成するようにプロンプトが表示されます:

  1. sudo DEBIAN_PRIORITY=low apt install postfix

このインストールプロセスでは、一連の対話型プロンプトが表示されます。このチュートリアルの目的で、プロンプトに以下の情報を入力してください:

  • メール設定の一般的なタイプは?: これについては、インターネットサイト を選択してください。これは私たちのインフラストラクチャのニーズに合致しています。
  • システムメール名: これは、アカウント部分のみが指定された場合に有効なメールアドレスを構築するために使用される基本ドメインです。たとえば、サーバーのホスト名が mail.example.com であるとします。おそらく、システムメール名を example.com に設定したいと思うでしょう。これにより、ユーザー名 user1 が与えられた場合、Postfix はアドレス user1@example.com を使用します。
  • Root および postmaster メール受信者: これは、root@postmaster@ に宛てられたメールが転送される Linux アカウントです。この例では、sammy を使用します。
  • 他のメール受信先: これは、この Postfix インスタンスが受け入れるメールの宛先を定義します。このサーバーが受信責任を負う他のドメインを追加する必要がある場合は、ここに追加してください。それ以外の場合は、デフォルトで十分です。
  • メールキューで同期更新を強制しますか?: おそらくジャーナリングされたファイルシステムを使用していると思われるため、ここではNoを選択してください。
  • ローカルネットワーク: これは、メールサーバーがメッセージを中継するように構成されたネットワークのリストです。ほとんどのシナリオではデフォルトが動作します。ただし、変更する場合は、ネットワーク範囲に関して非常に制限的であることを確認してください。
  • メールボックスのサイズ制限: メッセージのサイズを制限するために使用できます。 0 に設定すると、サイズ制限は無効になります。
  • ローカルアドレスの拡張文字: これは、通常のアドレスの部分と拡張部分(動的エイリアスの作成に使用される)を区切るために使用できる文字です。デフォルトの + は、このチュートリアルでは機能します。
  • 使用するインターネットプロトコル: Postfix がサポートする IP バージョンを制限するかどうかを選択します。このチュートリアルの目的で、すべて を選択します。

明示的に述べると、このガイドで使用される設定は次のとおりです:

  • メール構成の一般的なタイプは?: インターネットサイト
  • システムメールの名前: example.commail.example.comではありません)
  • Root および postmaster のメール受信者: あなたのプライマリ Linux アカウントのユーザー名(この例では sammy です)
  • メールを受信する他の宛先: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • メールキューへの同期更新を強制しますか?: No
  • ローカルネットワーク: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • メールボックスのサイズ制限: 0
  • ローカルアドレスの拡張文字: +
  • 使用するインターネットプロトコル: すべて

注意: これらの設定を変更する必要がある場合は、次のように入力して行うことができます:

  1. sudo dpkg-reconfigure postfix

プロンプトには以前の応答が事前に入力されます。

サービスを再起動するよう求められた場合は、デフォルトを受け入れてOKを選択してください。

インストールプロセスが完了すると、Postfixの設定をいくつか更新する準備が整います。

ステップ2 — Postfixの設定を変更する

これで、パッケージのインストールプロセスでプロンプトされなかったいくつかの設定を調整できます。Postfixの設定は、/etc/postfix/main.cfファイルで定義されています。このファイルを直接編集する代わりに、Postfixのpostconfコマンドを使用して設定をクエリしたり設定したりできます。

まず、非ルートのUbuntuユーザーのメールボックスの場所を設定します。 このガイドでは、Maildir形式を使用します。これは、メッセージを個々のファイルに分割し、ユーザーの操作に基づいてディレクトリ間で移動させる形式です。 このガイドではカバーされていない代替オプションは、mbox形式です。これはすべてのメッセージを単一のファイルに保存します。

home_mailbox 変数を Maildir/ に設定します。後で、この名前の下にユーザーのホームディレクトリ内にディレクトリ構造を作成します。 home_mailbox を次のように設定します:

  1. sudo postconf -e 'home_mailbox= Maildir/'

次に、任意の電子メールアカウントをLinuxシステムアカウントにマッピングする virtual_alias_maps テーブルの場所を設定します。 以下のコマンドを実行します。このコマンドは、テーブルの場所を /etc/postfix/virtual というハッシュデータベースファイルにマッピングします:

  1. sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

main.cf ファイルで仮想マップファイルの場所を定義したので、ファイル自体を作成し、Linuxシステム上のユーザーアカウントに電子メールアカウントをマッピングを開始できます。 好きなテキストエディタでファイルを作成します。この例では、nano を使用します:

  1. sudo nano /etc/postfix/virtual

電子メールを受信したいアドレスをすべてリストアップし、その後に空白を入れてそのメールを配信したいLinuxユーザーを記述します。

たとえば、contact@example.comadmin@example.com の電子メールを sammy Linuxユーザーに配信したい場合は、次のようにファイルを設定できます:

/etc/postfix/virtual
contact@example.com sammy
admin@example.com sammy

すべてのアドレスを適切なサーバーアカウントにマッピングしたら、ファイルを保存して閉じます。 nano を使用した場合は、CTRL + XYENTER キーを押してください。

マッピングを適用するには、次のように入力します:

  1. sudo postmap /etc/postfix/virtual

すべての変更が適用されていることを確認するために、Postfixプロセスを再起動します。

  1. sudo systemctl restart postfix

前提条件として、初期サーバーセットアップガイドに従ったと仮定します。このファイアウォールは、明示的に許可されていない限り、サーバー上のサービスへの外部接続をデフォルトでブロックしますので、Postfixの例外を許可するためのファイアウォールルールを追加する必要があります。

以下のように入力して、サービスへの接続を許可できます:

  1. sudo ufw allow Postfix

これで、Postfixが設定され、外部からの接続を受け入れる準備が整いました。ただし、まだメールクライアントでテストする準備が整っていません。サーバーに配信されるメールに対してクライアントをインストールし、それを使用して相互作用するには、Ubuntuサーバーの設定をいくつか変更する必要があります。

ステップ3 — メールクライアントのインストールとメールディレクトリ構造の初期化

メールの相互作用を行うために、この手順ではs-nailパッケージのインストール手順を説明します。これは、Maildir形式を正しく処理できるBSD xmailクライアントの機能豊富な派生版です。

ただし、クライアントをインストールする前に、MAIL環境変数が正しく設定されていることを確認することが賢明です。s-nailは、この変数を検索してユーザーのメールをどこで見つけるかを判断します。

MAIL変数がどのようにアカウントにアクセスしても設定されるようにするには、たとえばsshsusu -sudoなどを介してアクセスしても、/etc/bash.bashrcファイルに変数を設定し、/etc/profile.d内のファイルに追加する必要があります。これにより、デフォルトですべてのユーザーに設定されます。

これらのファイルに変数を追加するには、次のように入力します:

  1. echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

現在のセッションに変数を読み込むには、/etc/profile.d/mail.shファイルをソースに指定します:

  1. source /etc/profile.d/mail.sh

これで完了しました。APTを使用してs-nailメールクライアントをインストールします:

  1. sudo apt install s-nail

クライアントを実行する前に、いくつかの設定を調整する必要があります。エディタで/etc/s-nail.rcファイルを開きます:

  1. 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: 送信されたメールを保存するためのsent mboxファイルを作成します。このファイルは、folder変数に設定されたディレクトリ内に作成されます。この場合はMaildir

終了したら、ファイルを保存して閉じます。これで、システムのMaildir構造を初期化する準備が整いました。

A quick way to create the Maildir structure within your home directory is to send yourself an email with the s-nail command. Because the sent file will only be available once the Maildir is created, you should disable writing to it for this initial email. Do this by passing the -Snorecord option.

メールを送信するには、文字列をs-nailコマンドにパイプします。Linuxユーザーを受信者としてマークするようにコマンドを調整してください:

  1. echo 'init' | s-nail -s 'init' -Snorecord sammy

注意: 以下の応答を受け取ることがあります:

Output
Can't canonicalize "/home/sammy/Maildir"

これは正常ですが、最初のメッセージを送信するときにのみ表示される場合があります。

次のディレクトリが作成されたかどうかを確認して、~/Maildir ディレクトリを確認できます:

  1. 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:

ディレクトリ構造が作成されたので、s-nail クライアントをテストして、送信した init メッセージを表示し、外部の電子メールアドレスにメッセージを送信する準備ができました。

ステップ 4 — クライアントのテスト

クライアントを開くには、s-nail コマンドを実行します:

  1. s-nail

コンソールに rudimentary な受信トレイが表示され、init メッセージが待機しています:

Output
s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 [email protected] 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: [email protected] Subject: init Message-Id: <20220418150946.EE6897E11A@@mail.example.com> From: [email protected] init

h を入力してから ENTER キーを押してメッセージリストに戻ります:

  1. h
Output
>R 1 [email protected] 2022-04-18 15:09 14/452 init

メッセージの状態が R になったことに注目してください。これは、メッセージが読まれたことを示しています。

このメッセージはあまり役に立たないので、d を押してから ENTER を押して削除できます:

  1. d

ターミナルに戻るには、q を入力してから ENTER を押します:

  1. q

最終テストとして、s-nailが正しく電子メールを送信できるかどうかを確認します。これを行うには、前の手順でinitメッセージを送信したのと同様に、テキストファイルの内容をs-nailプロセスにパイプで渡すことができます。

まず、テキストエディタでテストメッセージを作成します:

  1. nano ~/test_message

内部に送信したいテキストを入力します:

~/test_message
Hello,

This is a test.  Please confirm receipt!

メッセージを書いたら、保存して閉じます。

次に、catコマンドを使用してメッセージをs-nailプロセスにパイプで渡します。 これを行うには、次の例を使用します。これには、以下のオプションが使用されます:

  • -s: これは電子メールメッセージの件名を定義します
  • -r: オプションで、「From:」フィールドのメールアドレスを変更します。デフォルトでは、ログインしているLinuxユーザーがこのフィールドを埋めるために使用されます。 -rオプションを使用すると、/etc/postfix/virtualファイルで定義したアドレスの1つなど、有効なアドレスでこれを上書きできます。 例として、次のコマンドは[email protected]を使用します。

また、user@email.comをアクセス可能な有効なメールアドレスに変更してください:

  1. cat ~/test_message | s-nail -s 'Test email subject line' -r [email protected] user@email.com

次に、メッセージを送信したいメールアドレスの受信トレイに移動します。 ほぼ直ちにメッセージがそこに待っているのを確認できます。

注意: メッセージが受信トレイにない場合は、スパムフォルダに配信されている可能性があります。

s-nailクライアント内で送信したメッセージを表示することができます。 インタラクティブクライアントを再度開始します:

  1. s-nail

電子メールクライアントから、送信したメッセージを表示するには、次のように入力します:

  1. file +sent

次のような出力が表示されます:

Output
+[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 To [email protected] 2022-04-18 15:12 10/211 Test email subject line

受信メールと同じコマンドを使用して送信メールを管理できます。

結論

これで、Ubuntu 22.04サーバーにPostfixが設定されました。メールサーバーの管理は、新しいシステム管理者にとって厳しい作業かもしれませんが、この設定では、自分自身を始めるのに十分なMTAメール機能が得られます。

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-on-ubuntu-22-04