Tutorial

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

Published on November 13, 2020
日本語
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パッケージキャッシュを更新します。

  1. sudo apt update

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

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

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

  1. 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を設定します。

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

次に、 virtual_alias_mapsテーブルの場所を設定します。このテーブルは、任意のメールアカウントをLinuxシステムアカウントにマッピングします。次のコマンドを実行します。これでテーブルの場所が/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でメールを受信し、そのメールをLinuxユーザーのsammy に配信したい場合は、次のようなファイルを設定します。

/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

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

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

  1. 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内のファイルに追加し、それが各ユーザーにデフォルトで設定されていることを確認します。

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

  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: 送信済メールをfolder変数として設定されたディレクトリ内に保存するために、sent mboxファイルを作成します。今回はMaildirディレクトリになります。

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

ホームディレクトリ内にMaildir構造を作成する簡単な方法は、s-nailコマンドで自分自身にメールを送信することです。sentファイルはMaildirが作成されないと利用できないため、この最初のメールでは書き込みを無効にする必要があります。-Snorecordオプションを渡すことでこれを行います。

文字列を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: 1463177269.Vfd01I40e4dM691221.mail.example.com /home/sammy/Maildir/tmp:

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

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

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

  1. 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キーを押すとメッセージ一覧に戻ります。

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

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

  1. cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example.com user@email.com

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

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

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

  1. s-nail

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

  1. file +sent

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

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のメール機能が備わったこの設定から始めるのがよいでしょう。

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors

Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.