はじめに
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
パッケージキャッシュを更新します:
次に、次のコマンドでpostfix
パッケージをインストールします。ここでは、DEBIAN_PRIORITY=low
環境変数をインストールコマンドに渡しています。これにより、インストールプロセスで追加のオプションを構成するようにプロンプトが表示されます:
このインストールプロセスでは、一連の対話型プロンプトが表示されます。このチュートリアルの目的で、プロンプトに以下の情報を入力してください:
- メール設定の一般的なタイプは?: これについては、インターネットサイト を選択してください。これは私たちのインフラストラクチャのニーズに合致しています。
- システムメール名: これは、アカウント部分のみが指定された場合に有効なメールアドレスを構築するために使用される基本ドメインです。たとえば、サーバーのホスト名が
mail.example.com
であるとします。おそらく、システムメール名をexample.com
に設定したいと思うでしょう。これにより、ユーザー名user1
が与えられた場合、Postfix はアドレスuser1@example.com
を使用します。 - Root および postmaster メール受信者: これは、
root@
とpostmaster@
に宛てられたメールが転送される Linux アカウントです。この例では、sammy を使用します。 - 他のメール受信先: これは、この Postfix インスタンスが受け入れるメールの宛先を定義します。このサーバーが受信責任を負う他のドメインを追加する必要がある場合は、ここに追加してください。それ以外の場合は、デフォルトで十分です。
- メールキューで同期更新を強制しますか?: おそらくジャーナリングされたファイルシステムを使用していると思われるため、ここではNoを選択してください。
- ローカルネットワーク: これは、メールサーバーがメッセージを中継するように構成されたネットワークのリストです。ほとんどのシナリオではデフォルトが動作します。ただし、変更する場合は、ネットワーク範囲に関して非常に制限的であることを確認してください。
- メールボックスのサイズ制限: メッセージのサイズを制限するために使用できます。
0
に設定すると、サイズ制限は無効になります。 - ローカルアドレスの拡張文字: これは、通常のアドレスの部分と拡張部分(動的エイリアスの作成に使用される)を区切るために使用できる文字です。デフォルトの
+
は、このチュートリアルでは機能します。 - 使用するインターネットプロトコル: Postfix がサポートする IP バージョンを制限するかどうかを選択します。このチュートリアルの目的で、すべて を選択します。
明示的に述べると、このガイドで使用される設定は次のとおりです:
- メール構成の一般的なタイプは?: インターネットサイト
- システムメールの名前:
example.com
(mail.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
- ローカルアドレスの拡張文字:
+
- 使用するインターネットプロトコル: すべて
注意: これらの設定を変更する必要がある場合は、次のように入力して行うことができます:
プロンプトには以前の応答が事前に入力されます。
サービスを再起動するよう求められた場合は、デフォルトを受け入れてOK
を選択してください。
インストールプロセスが完了すると、Postfixの設定をいくつか更新する準備が整います。
ステップ2 — Postfixの設定を変更する
これで、パッケージのインストールプロセスでプロンプトされなかったいくつかの設定を調整できます。Postfixの設定は、/etc/postfix/main.cf
ファイルで定義されています。このファイルを直接編集する代わりに、Postfixのpostconf
コマンドを使用して設定をクエリしたり設定したりできます。
まず、非ルートのUbuntuユーザーのメールボックスの場所を設定します。 このガイドでは、Maildir形式を使用します。これは、メッセージを個々のファイルに分割し、ユーザーの操作に基づいてディレクトリ間で移動させる形式です。 このガイドではカバーされていない代替オプションは、mbox形式です。これはすべてのメッセージを単一のファイルに保存します。
home_mailbox
変数を Maildir/
に設定します。後で、この名前の下にユーザーのホームディレクトリ内にディレクトリ構造を作成します。 home_mailbox
を次のように設定します:
次に、任意の電子メールアカウントをLinuxシステムアカウントにマッピングする virtual_alias_maps
テーブルの場所を設定します。 以下のコマンドを実行します。このコマンドは、テーブルの場所を /etc/postfix/virtual
というハッシュデータベースファイルにマッピングします:
main.cf
ファイルで仮想マップファイルの場所を定義したので、ファイル自体を作成し、Linuxシステム上のユーザーアカウントに電子メールアカウントをマッピングを開始できます。 好きなテキストエディタでファイルを作成します。この例では、nano
を使用します:
電子メールを受信したいアドレスをすべてリストアップし、その後に空白を入れてそのメールを配信したいLinuxユーザーを記述します。
たとえば、contact@example.com
と admin@example.com
の電子メールを sammy Linuxユーザーに配信したい場合は、次のようにファイルを設定できます:
contact@example.com sammy
admin@example.com sammy
すべてのアドレスを適切なサーバーアカウントにマッピングしたら、ファイルを保存して閉じます。 nano
を使用した場合は、CTRL + X
、Y
、ENTER
キーを押してください。
マッピングを適用するには、次のように入力します:
すべての変更が適用されていることを確認するために、Postfixプロセスを再起動します。
前提条件として、初期サーバーセットアップガイドに従ったと仮定します。このファイアウォールは、明示的に許可されていない限り、サーバー上のサービスへの外部接続をデフォルトでブロックしますので、Postfixの例外を許可するためのファイアウォールルールを追加する必要があります。
以下のように入力して、サービスへの接続を許可できます:
これで、Postfixが設定され、外部からの接続を受け入れる準備が整いました。ただし、まだメールクライアントでテストする準備が整っていません。サーバーに配信されるメールに対してクライアントをインストールし、それを使用して相互作用するには、Ubuntuサーバーの設定をいくつか変更する必要があります。
ステップ3 — メールクライアントのインストールとメールディレクトリ構造の初期化
メールの相互作用を行うために、この手順ではs-nail
パッケージのインストール手順を説明します。これは、Maildir形式を正しく処理できるBSD xmail
クライアントの機能豊富な派生版です。
ただし、クライアントをインストールする前に、MAIL
環境変数が正しく設定されていることを確認することが賢明です。s-nail
は、この変数を検索してユーザーのメールをどこで見つけるかを判断します。
MAIL
変数がどのようにアカウントにアクセスしても設定されるようにするには、たとえばssh
、su
、su -
、sudo
などを介してアクセスしても、/etc/bash.bashrc
ファイルに変数を設定し、/etc/profile.d
内のファイルに追加する必要があります。これにより、デフォルトですべてのユーザーに設定されます。
これらのファイルに変数を追加するには、次のように入力します:
現在のセッションに変数を読み込むには、/etc/profile.d/mail.sh
ファイルをソースに指定します:
これで完了しました。APTを使用してs-nail
メールクライアントをインストールします:
クライアントを実行する前に、いくつかの設定を調整する必要があります。エディタで/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ユーザーを受信者としてマークするようにコマンドを調整してください:
注意: 以下の応答を受け取ることがあります:
OutputCan't canonicalize "/home/sammy/Maildir"
これは正常ですが、最初のメッセージを送信するときにのみ表示される場合があります。
次のディレクトリが作成されたかどうかを確認して、~/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
コマンドを実行します:
コンソールに rudimentary な受信トレイが表示され、init
メッセージが待機しています:
Outputs-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
キーを押してメッセージリストに戻ります:
Output>R 1 [email protected] 2022-04-18 15:09 14/452 init
メッセージの状態が R
になったことに注目してください。これは、メッセージが読まれたことを示しています。
このメッセージはあまり役に立たないので、d
を押してから ENTER
を押して削除できます:
ターミナルに戻るには、q
を入力してから ENTER
を押します:
最終テストとして、s-nail
が正しく電子メールを送信できるかどうかを確認します。これを行うには、前の手順でinit
メッセージを送信したのと同様に、テキストファイルの内容をs-nail
プロセスにパイプで渡すことができます。
まず、テキストエディタでテストメッセージを作成します:
内部に送信したいテキストを入力します:
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
をアクセス可能な有効なメールアドレスに変更してください:
次に、メッセージを送信したいメールアドレスの受信トレイに移動します。 ほぼ直ちにメッセージがそこに待っているのを確認できます。
注意: メッセージが受信トレイにない場合は、スパムフォルダに配信されている可能性があります。
s-nail
クライアント内で送信したメッセージを表示することができます。 インタラクティブクライアントを再度開始します:
電子メールクライアントから、送信したメッセージを表示するには、次のように入力します:
次のような出力が表示されます:
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メール機能が得られます。