One place for hosting & domains

      04にPostfixをインストールして設定

      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パッケージキャッシュを更新します。

      次に、次のコマンドでpostfixパッケージをインストールします。ここで、環境変数DEBIAN_PRIORITY=lowをインストールコマンドに渡します。これにより、インストールプロセスが、追加オプションを設定するよう促すようになります。

      • sudo DEBIAN_PRIORITY=low apt install postfix

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

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

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

      • メール設定の一般的なタイプ:** Internet Site**
      • システムメール名: example.commail.example.comではない)
      • rootおよびpostmasterメール受信者: プライマリLinuxアカウントユーザー 名(例ではsammy
      • メールを受信する他の宛先: $myhostname, example.commail.example.comlocalhost.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ユーザーを入力します。

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

      /etc/postfix/virtual

      contact@example.com sammy
      admin@example.com sammy
      

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

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

      • sudo postmap /etc/postfix/virtual

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

      • sudo systemctl restart postfix

      前提条件の初期サーバーセットアップガイドに従った場合、UFWを使用したファイアウォールが設定されているはずです。UFWファイアウォールは、これらの接続が明示的に許可されていない限り、サーバー上のサービスへの外部接続をデフォルトでブロックします。したがって、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メールクライアントをインストールします。

      クライアントを実行する前に、設定をいくつか調整する必要があります。エディタで/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

      :次の応答が得られる場合があります

      Output

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

      これは正常な動作で、メッセージの初回送信時のみ表示されるものです。

      ディレクトリが作成されたかどうか確認するには、~/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コマンドを実行します。

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

      Output

      s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com 2020-05-19 15:40 14/392 init

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

      Output

      [-- Message 1 -- 14 lines, 369 bytes --]: From sammy@example.com Tue May 19 15:40:48 2020 Date: Tue, 19 May 2020 15:40:48 +0000 To: sammy@example.com Subject: init Message-Id: <20160513220749.A278F228D9@mail.example.com> From: sammy@example.com init

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

      Output

      >R 1 sammy@example.com 2020-05-19 15:40 14/392 init

      メッセージのステータスが今R、つまり既読になったことが分かります。

      このメッセージはあまり有用ではないので、dを入力してからENTERキーを押して削除します。 

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

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

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

      エディター内で送信するテキストを入力します。

      ~/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クライアント内で表示できます。次のように入力して、対話型クライアントを再起動します。

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

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

      Output

      +[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject line

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

      まとめ

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



      Source link