Ubuntu 20 .04にPostfixをインストールして設定 する方法

このチュートリアルの以前のバージョンは、Justin Ellingwoodによって作成されました。

はじめに

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

このガイドでは、Ubuntu 20.04サーバーにPostfixをインストールして設定する方法を学びます。次に、メールユーザーエージェント(MUA、別名メールクライアント)であるs-nailをインストールして、Postfixがメールを正しくルーティングできるかテストします。

このチュートリアルの目標は、Postfixを起動してメールの基本機能を迅速に実行できるようになることです。このガイド終了までにメールサーバーの全機能がそろうわけではありませんが、始めるのに役立つセットアップの基本コンポーネントがいくつか得られます。

前提条件

このガイドに沿って作業を進めるには、次のものが必要です。

  • Postfixメールサーバーとして機能する、Ubuntu 20.04で稼働するサーバー。 sudo権限が付与されたroot以外のユーザーと、ufwで設定されたファイアウォール。サーバーのセットアップ方法については、Ubuntu 20.04初期サーバーセットアップガイドを参照してください。
  • Ubuntu 20.04サーバーを参照するFQDN。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

このインストールプロセスで、一連の対話型プロンプトが開きます。このチュートリアルの目的上、次の情報を使用して、プロンプトに応答します。

  • メール設定の一般的なタイプ:ここでは基盤のニーズに合致するInternet Siteを選択します。
  • システムメール名: アドレスのアカウント部分のみが決まっている場合、有効なメールアドレスの作成に使用されるベースドメインです。 たとえば、サーバーのホスト名がmail.example.comであるとします。システムメール名をexample.comに設定して、ユーザー名 user1とすると、Postfixはアドレス[email protected]を使用します。
  • rootおよびpostmasterメール受信者: [email protected]および[email protected]宛てのメールを転送するLinuxアカウントです。これにはプライマリアカウントを使用します。この場合はsammyです。
  • メールを受け入れる他の宛先: このPostfixインスタンスが受け入れるメール宛先を定義します。このサーバーが受信するドメインを追加する場合は、ここに追加します。そうでない場合は、デフォルトで問題なく動作します。
  • メールキューの同期更新を強制しますか?: ジャーナルファイルシステムを使用している確率が高いため、ここではNoを選択します。
  • ローカルネットワーク: メールサーバーがメッセージを中継するように設定されているネットワークの一覧です。ほとんどのシナリオでデフォルトが使えます。変更する場合は、ネットワークレンジに関する制限をかなり厳しくしてください。
  • メールボックスサイズ制限: メッセージのサイズの制限に使用します。0に設定すると、サイズ制限が無効になります。
  • ローカルアドレス拡張文字: アドレスの通常の部分を拡張(動的エイリアスの作成に使用)から切り離すために使用する文字です。このチュートリアルでは、デフォルトの+とします。
  • 使用するインターネットプロトコル: PostfixがサポートするIPバージョンを制限するかどうか選択します。このチュートリアルでは、allを選択します。

明示的に、このガイドでは次の設定を使用します。

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

: これらの設定を再調整するために戻るときは、次のように入力します。

  • sudo dpkg-reconfigure postfix

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

インストールプロセスが終了し、Postfix設定を更新する準備が整いました。

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

次に、パッケージインストール中に尋ねられなかった設定を調整します。Postfixの設定の多くは/etc/postfix/main.cfファイルで定義されます。このファイルを直接編集するのではなく、Postfixのpostconfコマンドを使用して、クエリするか設定を行います。

まず、root以外のUbuntuユーザー用にメールボックスの場所を設定します。このガイドでは、Maildir 形式を使用します。メッセージは個々のファイルに分割され、これらのファイルはユーザーのアクションに基づいてディレクトリ間を移動します。もう1つのオプションは、すべてのメッセージを1つのファイルに保存する mbox形式です。

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ユーザーを入力します。

たとえば、[email protected][email protected]でメールを受信し、そのメールをLinuxユーザーのsammy に配信したい場合は、次のようなファイルを設定します。

/etc/postfix/virtual

[email protected] sammy [email protected] sammy 

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

次のように入力してマッピングを適用します。

  • sudo postmap /etc/postfix/virtual

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

  • sudo systemctl restart postfix

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

次のように入力して、サービスへの接続を許可します。

  • sudo ufw allow Postfix

これでPostfixは外部接続を受け入れるように設定されました。ただし、メールクライアントでテストする準備はまだできていません。クライアントをインストールしてサーバーに配信するメールとやり取りする前に、Ubuntuサーバーのセットアップにいくつか変更を加える必要があります。

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

配信中のメールとやり取りするために、s-nailパッケージをインストールするプロセスをこのステップで見てみましょう。これはBSD xmailクライアントのバリアントであり、機能が豊富で、Maildir形式を正しく処理できます。

ただし、クライアントをインストールする前に、MAIL環境変数の設定が正しいか確認するのが賢明です。 s-nailは、この変数を調べて、ユーザーのメールを探す場所を見つけます。

アカウントへのアクセス方法(sshsusu-sudoなど)にかかわらず、MAIL変数が設定されていることを確認するには、/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変数として設定されたディレクトリ内に保存するために、sent mboxファイルを作成します。今回はMaildirディレクトリになります。

完了したら、ファイルを保存して閉じます。これで、システムの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: 1463177269.Vfd01I40e4dM691221.mail.example.com  /home/sammy/Maildir/tmp: 

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

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

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

  • s-nail

コンソールでは、簡易な受信トレイに届いたinitメッセージが表示されるはずです。

Outputs-nail version v14.9.15.  Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N  1 [email protected]     2020-05-19 15:40   14/392   init 

ENTERキーを押すとメッセージが表示されます。

Output[-- Message  1 -- 14 lines, 369 bytes --]: From [email protected] Tue May 19 15:40:48 2020 Date: Tue, 19 May 2020 15:40:48 +0000 To: [email protected] Subject: init Message-Id: <[email protected]> From: [email protected]  init 

hを入力してENTERキーを押すとメッセージ一覧に戻ります。

  • h
Output>R  1 [email protected]     2020-05-19 15:40   14/392   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ファイルで定義したアドレスなど、有効なアドレスでこれを上書きできます。たとえば、次のコマンドは[email protected]を使用します。

また、[email protected] をアクセス可能なメールアドレスに変更してください。

次に、メッセージを送信したメールアドレスの受信トレイに移動します。瞬時にメッセージが届いているはずです。

:メッセージが受信トレイにない場合は、スパムフォルダに届いた可能性があります。

送信したメッセージは、s-nailクライアント内で表示できます。次のように入力して、対話型クライアントを再起動します。

  • s-nail

メールクライアントから、次のように入力して送信メッセージを表示します。

  • file +sent

出力は次のようになります。

Output+[/home/sammy/Maildir/]sent: 1 message 1 new ▸N  1 [email protected] 2020-05-19 15:47   12/297   Test email subject line 

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

まとめ

これで、Ubuntu 20.04サーバー上でPostfix設定が完了しました。メールサーバーの管理は、初心者の管理者にとっては難しい作業ですが、必要なMTAのメール機能が備わったこの設定から始めるのがよいでしょう。