Ubuntu22.04にPostfixをインストールして設定する方法
序章
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
パッケージキャッシュ:
- sudo apt update
次に、をインストールします postfix
次のコマンドでパッケージ化します。 ここで合格することに注意してください DEBIAN_PRIORITY=low
このインストールコマンドに環境変数を追加します。 これにより、インストールプロセスで、いくつかの追加オプションを構成するように求められます。
- 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
- ローカルアドレス拡張文字:
+
- 使用するインターネットプロトコル:すべて
注:これらの設定を変更するために戻る必要がある場合は、次のように入力してください。
- 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ユーザーをリストします。
たとえば、次のアドレスでメールを受け取りたい場合 contact@example.com
と admin@example.com
これらの電子メールをsammy Linuxユーザーに配信したい場合は、次のようにファイルを設定できます。
contact@example.com sammy
admin@example.com sammy
すべてのアドレスを適切なサーバーアカウントにマップしたら、ファイルを保存して閉じます。 使用した場合 nano
、を押してこれを行います CTRL + X
, Y
、 それから ENTER
.
次のように入力して、マッピングを適用します。
- sudo postmap /etc/postfix/virtual
Postfixプロセスを再起動して、すべての変更が適用されていることを確認します。
- sudo systemctl restart postfix
前提条件の初期サーバーセットアップガイドに従っていると仮定すると、UFWを使用してファイアウォールを構成していることになります。 このファイアウォールは、サーバー上のサービスへの外部接続が明示的に許可されていない限り、それらの接続をデフォルトでブロックするため、Postfixの例外を許可するファイアウォールルールを追加する必要があります。
次のように入力して、サービスへの接続を許可できます。
- 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
デフォルトですべてのユーザーに設定されていることを確認します。
これらのファイルに変数を追加するには、次のように入力します。
- 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
それが完了したら、 s-nail
APTを使用した電子メールクライアント:
- 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
を作成しますsent
送信されたメールを保存するためのmboxファイルfolder
変数、この場合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:
1650294586.Vfc01I7e11dM993645.mail.example.com
/home/sammy/Maildir/tmp:
ディレクトリ構造が作成されたので、テストする準備ができました。 s-nail
クライアントを表示して init
送信したメッセージと外部の電子メールアドレスにメッセージを送信します。
ステップ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
電子メールメッセージを正しく送信することができます。 これを行うには、テキストファイルの内容をパイプで送信します。 s-nail
あなたがしたように、プロセス init
前の手順で送信したメッセージ。
テキストエディタでテストメッセージを書くことから始めます。
- nano ~/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
アクセスできる有効なメールアドレスへ:
- cat ~/test_message | s-nail -s 'Test email subject line' -r [email protected] user@email.com
次に、メッセージの送信先の電子メールアドレスの受信ボックスに移動します。 あなたはあなたのメッセージがほとんどすぐにそこで待っているのを見るでしょう。
注:メッセージが受信トレイにない場合は、迷惑メールフォルダに配信されている可能性があります。
あなたはあなたの中であなたの送信されたメッセージを見ることができます 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電子メール機能が必要です。