序章

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

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

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

前提条件

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

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

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

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

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

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

  • メール構成の一般的なタイプ?インターネットサイト
  • システムメール名example.com (いいえ mail.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
  • ローカルアドレス拡張文字+
  • 使用するインターネットプロトコルすべて

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

  1. 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 次のように入力します。

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

/ etc / postfix / virtual
contact@example.com sammy
admin@example.com sammy

すべてのアドレスを適切なサーバーアカウントにマップしたら、ファイルを保存して閉じます。 使用した場合 nano、を押してこれを行います CTRL + X, Y、 それから ENTER.

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

  1. sudo postmap /etc/postfix/virtual

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

  1. sudo systemctl restart postfix

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

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

  1. sudo ufw allow Postfix

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

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

配信されているメールを操作するために、この手順では、 s-nail パッケージ。 これは、BSDの機能が豊富なバリアントです。 xmail Maildir形式を正しく処理できるクライアント。

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

確実にするために MAIL 変数は、アカウントへのアクセス方法に関係なく設定されます。 ssh, su, su -、 また sudo、たとえば—変数を設定する必要があります /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

それが完了したら、 s-nail APTを使用した電子メールクライアント:

  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 を作成します sent 送信されたメールを保存するためのmboxファイル folder 変数、この場合 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: 1650294586.Vfc01I7e11dM993645.mail.example.com /home/sammy/Maildir/tmp:

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

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

クライアントを開くには、 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 [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:

  1. h
Output
>R 1 [email protected] 2022-04-18 15:09 14/452 init

メッセージの状態が次のようになっていることに注意してください。 R、読み取られたことを示します。

このメッセージはあまり役に立たないので、を押して削除できます d、 その後 ENTER:

  1. d

ターミナルに戻るには、次のように入力します q その後 ENTER:

  1. q

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

テキストエディタでテストメッセージを書くことから始めます。

  1. nano ~/test_message

中に、送信したいテキストを入力します。

〜/ test_message
Hello,

This is a test.  Please confirm receipt!

メッセージを書き込んだ後、ファイルを保存して閉じます。

次に、 cat メッセージをパイプするコマンド s-nail 処理する。 これらのオプションを使用する次の例を使用して、これを行うことができます。

  • -s:これは、電子メールメッセージの件名を定義します
  • -r:電子メールの「From:」フィールドへのオプションの変更。 デフォルトでは、ログインしているLinuxユーザーがこのフィールドに入力するために使用されます。 The -r オプションを使用すると、これを、で定義したアドレスの1つなどの有効なアドレスで上書きできます。 /etc/postfix/virtual ファイル。 説明のために、次のコマンドは [email protected]

また、必ず変更してください user@email.com アクセスできる有効なメールアドレスへ:

  1. cat ~/test_message | s-nail -s 'Test email subject line' -r [email protected] user@email.com

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

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

あなたはあなたの中であなたの送信されたメッセージを見ることができます s-nail クライアント。 インタラクティブクライアントを再起動します。

  1. s-nail

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

  1. 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電子メール機能が必要です。