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

提供:Dev Guides
移動先:案内検索

序章

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

このガイドでは、Ubuntu22.04サーバーにPostfixをインストールして設定する方法を学びます。 次に、[X13X]メールクライアントとも呼ばれるメールユーザーエージェント(MUA)であるs-nailをインストールして、Postfixがメールを正しくルーティングできることをテストします。

このチュートリアルの目的は、いくつかの最低限の電子メール機能だけでPostfixをすばやく起動して実行できるようにすることであることに注意してください。 このガイドの終わりまでにフル機能の電子メールサーバーを使用することはできませんが、開始に役立つこのようなセットアップの基本的なコンポーネントがいくつかあります。

前提条件

独自のメールサーバーの設定と保守は複雑で時間がかかります。 ほとんどのユーザーにとって、代わりに有料のメールサービスに依存する方が現実的です。 独自のメールサーバーの実行を検討している場合は、この記事を確認して、実行したくない理由を確認することをお勧めします。

このガイドに従ってPostfixをインストールして設定することが確実な場合は、最初に次のものが必要です。

  • Postfixメールサーバーとして機能するUbuntu22.04を実行しているサーバー。 このサーバーには、sudo権限を持つroot以外のユーザーと、UFWで構成されたファイアウォールが必要です。 Ubuntu22.04初期サーバーセットアップガイドに従ってこれをセットアップできます。
  • Ubuntu22.04サーバーを指す完全修飾ドメイン名。 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

このインストールプロセスにより、一連のインタラクティブなプロンプトが開きます。 このチュートリアルでは、次の情報を使用してプロンプトに入力します。

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

明確にするために、これらはこのガイドで使用される設定です:

  • メール構成の一般的なタイプ?インターネットサイト
  • システムメール名example.commail.example.comではありません)
  • ルートおよびポストマスターのメール受信者:プライマリLinuxアカウントのユーザー名(この例では sammy
  • ' のメールを受け入れるその他の宛先:$myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • メールキューで同期更新を強制しますか?いいえ
  • ローカルネットワーク127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • メールボックスのサイズ制限0
  • ローカルアドレス拡張文字+
  • 使用するインターネットプロトコルすべて

:これらの設定を変更するために戻る必要がある場合は、次のように入力してください。

sudo dpkg-reconfigure postfix

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


サービスを再開するように求められたら、デフォルトを受け入れてOKを選択します。

インストールプロセスが完了すると、Postfix設定にいくつかの更新を行う準備が整います。

ステップ2—Postfix設定を変更する

これで、パッケージのインストールプロセスで要求されなかったいくつかの設定を調整できます。 Postfixの構成設定の多くは、/etc/postfix/main.cfファイルで定義されています。 このファイルを直接編集するのではなく、Postfixのpostconfコマンドを使用して、設定を照会または設定できます。

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

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]で電子メールを受け入れ、それらの電子メールを sammy Linuxユーザーに配信したい場合は、ファイルを設定できます。このような:

/ etc / postfix / virtual

[email protected] sammy
[email protected] sammy

すべてのアドレスを適切なサーバーアカウントにマップしたら、ファイルを保存して閉じます。 nanoを使用した場合は、CTRL + XYENTERの順に押してください。

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

sudo postmap /etc/postfix/virtual

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

sudo systemctl restart postfix

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

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

sudo ufw allow Postfix

これで、Postfixが構成され、外部接続を受け入れる準備が整いました。 ただし、メールクライアントでテストする準備はまだできていません。 クライアントをインストールし、それを使用してサーバーに配信されるメールを操作する前に、Ubuntuサーバーの設定にいくつかの変更を加える必要があります。

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

配信されるメールを操作するために、このステップではs-nailパッケージをインストールするプロセスを順を追って説明します。 これは、Maildir形式を正しく処理できるBSDxmailクライアントの機能豊富なバリアントです。

ただし、クライアントをインストールする前に、MAIL環境変数が正しく設定されていることを確認することをお勧めします。 s-nailはこの変数を探して、ユーザーのメールの場所を特定します。

アカウントへのアクセス方法に関係なく、MAIL変数が設定されていることを確認するには、sshsusu -sudoのいずれかを使用します。 ]たとえば、/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=MaildirMaildirディレクトリを内部folder変数に設定します
  • set record=+sentは、folder変数として設定されているディレクトリ(この場合はMaildir)内に送信メールを保存するためのsentmboxファイルを作成します。

終了したら、ファイルを保存して閉じます。 これで、システムの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:
1650294586.Vfc01I7e11dM993645.mail.example.com

/home/sammy/Maildir/tmp:

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

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

クライアントを開くには、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]     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と入力すると、メッセージリストに戻ることができます。

h
Output>R  1 [email protected]     2022-04-18 15:09   14/452   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]をアクセス可能な有効なメールアドレスに変更してください。

cat ~/test_message | s-nail -s 'Test email subject line' -r [email protected] [email protected]

次に、メッセージの送信先の電子メールアドレスの受信ボックスに移動します。 あなたはあなたのメッセージがほとんどすぐにそこで待っているのを見るでしょう。

:メッセージが受信トレイにない場合は、迷惑メールフォルダに配信されている可能性があります。


s-nailクライアント内で送信済みメッセージを表示できます。 インタラクティブクライアントを再起動します。

s-nail

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

file +sent

次のような出力が表示されます。

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 

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

結論

これで、Ubuntu22.04サーバーでPostfixが構成されました。 電子メールサーバーの管理は、新しいシステム管理者にとって難しい作業になる可能性がありますが、この構成では、開始するのに十分なMTA電子メール機能が必要です。