このチュートリアルの以前のバージョンは、Justin Ellingwoodによって作成されました。
Postfixは人気のあるオープンソースのメール転送エージェント(MTA)であり、Linuxシステムで電子メールをルーティングおよび配信するために使用できます。インターネット上のパブリックメールサーバーの約25%がPostfixを実行していると推定されます。
このガイドでは、Ubuntu 20.04サーバーにPostfixをインストールして設定する方法を学びます。次に、メールユーザーエージェント(MUA、別名メールクライアント)であるs-nail
をインストールして、Postfixがメールを正しくルーティングできるかテストします。
このチュートリアルの目標は、Postfixを起動してメールの基本機能を迅速に実行できるようになることです。このガイド終了までにメールサーバーの全機能がそろうわけではありませんが、始めるのに役立つセットアップの基本コンポーネントがいくつか得られます。
このガイドに沿って作業を進めるには、次のものが必要です。
sudo
権限が付与されたroot以外のユーザーと、ufwで設定されたファイアウォール。サーバーのセットアップ方法については、Ubuntu 20.04初期サーバーセットアップガイドを参照してください。このチュートリアルでは、FQDNがmail.example.com
のホストを設定していると仮定します。必要に応じて、 example.com
またはmail.example.com
を変更して、独自のFQDNを反映します。
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です。0
に設定すると、サイズ制限が無効になります。+
とします。明示的に、このガイドでは次の設定を使用します。
example.com
(mail.example.com
ではない)$myhostname, example.com、mail.example.com、localhost.example.com、localhost
127.0.0/8 [:ffff:127.0.0.0]/104 [:1]/128
0
+
注: これらの設定を再調整するために戻るときは、次のように入力します。
- sudo dpkg-reconfigure postfix
プロンプトには、以前の応答が事前に入力されます。
インストールプロセスが終了し、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.com
とadmin@example.com
でメールを受信し、そのメールをLinuxユーザーのsammy に配信したい場合は、次のようなファイルを設定します。
contact@example.com sammy
admin@example.com sammy
すべてのアドレスを対応するサーバーアカウントにマッピングしたら、ファイルを保存して閉じます。nano
を使用した場合は、CTRL + X
、Y
、ENTER
キーを押します。
次のように入力してマッピングを適用します。
- sudo postmap /etc/postfix/virtual
Postfixプロセスを再起動して、すべての変更が適用されたことを確認してください。
- sudo systemctl restart postfix
前提条件の初期サーバーセットアップガイドに従った場合、UFWを使用したファイアウォールが設定されているはずです。UFWファイアウォールは、これらの接続が明示的に許可されていない限り、サーバー上のサービスへの外部接続をデフォルトでブロックします。したがって、Postfixの例外を許可するファイアウォールルールを追加する必要があります。
次のように入力して、サービスへの接続を許可します。
- sudo ufw allow Postfix
これでPostfixは外部接続を受け入れるように設定されました。ただし、メールクライアントでテストする準備はまだできていません。クライアントをインストールしてサーバーに配信するメールとやり取りする前に、Ubuntuサーバーのセットアップにいくつか変更を加える必要があります。
配信中のメールとやり取りするために、s-nail
パッケージをインストールするプロセスをこのステップで見てみましょう。これはBSD xmail
クライアントのバリアントであり、機能が豊富で、Maildir形式を正しく処理できます。
ただし、クライアントをインストールする前に、MAIL
環境変数の設定が正しいか確認するのが賢明です。 s-nail
は、この変数を調べて、ユーザーのメールを探す場所を見つけます。
アカウントへのアクセス方法(ssh
、su
、su-
、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
ファイルの最後に次のオプションを追加します。
. . .
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
メッセージを表示し、外部メールアドレスにメッセージを送信します。
クライアントを開くには、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 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
キーを押すとメッセージ一覧に戻ります。
- h
Output>R 1 sammy@example.com 2020-05-19 15:40 14/392 init
メッセージのステータスが今R
、つまり既読になったことが分かります。
このメッセージはあまり有用ではないので、d
を入力してからENTER
キーを押して削除します。
- d
ターミナルに戻るには、q
を入力してからENTER
キーを入力します。
- q
最終テストとして、s-nail
がメッセージを正しくメール送信できるか確認します。これを行うには、前のステップで送信したinit
メッセージで行ったように、テキストファイルの内容をs-nail
プロセスにパイプします。
まず、テキストエディターでテストメッセージを作成します。
- nano ~/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 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.
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!