前書き

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

このガイドでは、Ubuntu 18.04サーバーでPostfixをすばやく起動して実行する方法を説明します。

前提条件

このガイドに従うためには、 `+ sudo +`権限を持つ非rootユーザーにアクセスする必要があります。 Ubuntu 18.04初期サーバーセットアップガイドに従って必要なユーザーを作成できます。

Postfixを適切に設定するには、Ubuntu 18.04サーバーを指す完全修飾ドメイン名が必要です。 https://www.digitalocean.com/community/articles/how-to-set-up-a-host-name-with-digitalocean [このガイド]に従って、DigitalOceanを使用したドメイン名の設定に関するヘルプを見つけることができます。 メールの受け入れを計画している場合は、メールサーバーを指すMXレコードも持っていることを確認する必要があります。

このチュートリアルの目的上、 `+ mail.example.com +`のFQDNを持つホストを設定していると仮定します。

ステップ1-Postfixをインストールする

PostfixはUbuntuのデフォルトリポジトリに含まれているため、インストールは簡単です。

まず、ローカルの `+ apt `パッケージキャッシュを更新してから、ソフトウェアをインストールします。 追加のプロンプトに答えるために、 ` DEBIAN_PRIORITY = low +`環境変数をインストールコマンドに渡します。

sudo apt update
sudo DEBIAN_PRIORITY=low apt install postfix

次の情報を使用して、環境に合わせてプロンプトを正しく入力してください。

  • メール設定の一般的なタイプ?:このため、*インターネットサイト*を選択します。これは、インフラストラクチャのニーズに一致するためです。

  • システムメール名:これは、アドレスのアカウント部分のみが指定されている場合に有効な電子メールアドレスを作成するために使用されるベースドメインです。 たとえば、サーバーのホスト名は「+ mail.example.com 」ですが、システムメール名を「 example.com 」に設定して、ユーザー名「 user1 」を指定すると、Postfixはアドレスを使用します` user1 @ example.com +`。

  • ルートおよびポストマスターメール受信者:これは、 `+ root @ `および ` postmaster @ +`宛てのメールを転送するLinuxアカウントです。 これにはプライマリアカウントを使用します。 この場合、* sammy *です。

  • メールを受け入れる他の宛先:これは、このPostfixインスタンスが受け入れるメール宛先を定義します。 このサーバーが受信する他のドメインを追加する必要がある場合は、ここに追加してください。そうでない場合は、デフォルトで問題なく動作します。

  • メールキューの同期更新を強制しますか?:ジャーナルファイルシステムを使用している可能性が高いため、ここで*いいえ*を受け入れます。

  • ローカルネットワーク:これは、メールサーバーがメッセージを中継するように設定されているネットワークのリストです。 デフォルトはほとんどのシナリオで機能するはずです。 変更する場合は、ネットワーク範囲に関して非常に制限が厳しいことを確認してください。

  • メールボックスのサイズ制限:これは、メッセージのサイズを制限するために使用できます。 「0」に設定すると、サイズ制限が無効になります。

  • ローカルアドレス拡張文字:これは、アドレスの通常の部分を拡張(ダイナミックエイリアスの作成に使用)から分離するために使用できる文字です。

  • 使用するインターネットプロトコル:PostfixがサポートするIPバージョンを制限するかどうかを選択します。 目的に合わせて「すべて」を選択します。

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

  • メール設定の一般的なタイプ:インターネットサイト

  • システムメール名:example.com(mail.example.comではありません)

  • ルートおよびポストマスターのメール受信者:サミー

  • メールを受け取る他の宛先:$ 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

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

完了したら、もう少し設定を行って、システムを希望どおりにセットアップできます。

ステップ2-Postfix設定の調整

次に、パッケージで要求されなかった設定を調整できます。

最初に、メールボックスを設定できます。 * Maildir 形式を使用します。これは、メッセージを個々のファイルに分割し、ユーザーのアクションに基づいてディレクトリ間で移動します。 もう1つのオプションは、すべてのメッセージを1つのファイルに保存する mbox *形式(ここでは説明しません)です。

`+ home_mailbox `変数を ` Maildir / `に設定すると、ユーザーのホームディレクトリ内にその名前でディレクトリ構造が作成されます。 ` postconf `コマンドを使用して、構成設定を照会または設定できます。 次を入力して、 ` home_mailbox +`を設定します。

sudo postconf -e 'home_mailbox= Maildir/'

次に、 `+ virtual_alias_maps `テーブルの場所を設定できます。 このテーブルは、任意の電子メールアカウントをLinuxシステムアカウントにマップします。 このテーブルを ` / etc / postfix / virtual`に作成します。 繰り返しますが、 `+ postconf +`コマンドを使用できます。

sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

ステップ3-メールアドレスをLinuxアカウントにマッピングする

次に、仮想マップファイルを設定できます。 テキストエディターでファイルを開きます。

sudo nano /etc/postfix/virtual

仮想エイリアスマップテーブルは、非常に単純な形式を使用します。 左側には、メールを受け取るアドレスをリストできます。 その後、空白で区切って、メールを配信するLinuxユーザーを入力します。

たとえば、 + contact @ example.com +`と `+ admin @ example.com +`でメールを受け取り、それらのメールを `+ sammy + Linuxユーザーに配信したい場合は、このようなファイル:

/ etc / postfix / virtual

すべてのアドレスを適切なサーバーアカウントにマッピングしたら、ファイルを保存して閉じます。

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

sudo postmap /etc/postfix/virtual

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

sudo systemctl restart postfix

ステップ4-ファイアウォールを調整する

UFWファイアウォールを実行している場合は、サーバーの初期セットアップガイドで構成されているように、Postfixの例外を許可する必要があります。

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

sudo ufw allow Postfix

Postfixサーバーコンポーネントがインストールされ、準備ができました。 次に、Postfixが処理するメールを処理できるクライアントを設定します。

手順5-メールの場所に合わせて環境を設定する

クライアントをインストールする前に、 `+ 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

手順6-メールクライアントのインストールと構成

配信されているメールとやり取りするために、 `+ s-​​nail `パッケージをインストールします。 これはBSD ` xmail `クライアントのバリアントであり、機能が豊富で、Maildir形式を正しく処理でき、ほとんどの場合後方互換性があります。 GNUバージョンの ` mail +`には、ソース形式に関係なく常に読み取りメールをmbox形式で保存するなど、いくつかの制限があります。

`+ 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

これにより、クライアントは空の受信トレイでも開くことができます。 また、 + Maildir`ディレクトリを内部の + folder`変数に設定し、これを使用して、その中に、送信メールを保存するための + sent + mboxファイルを作成します。

完了したら、ファイルを保存して閉じます。

手順7-Maildirの初期化とクライアントのテスト

これで、クライアントをテストできます。

ディレクトリ構造の初期化

ホームディレクトリ内にMaildir構造を作成する最も簡単な方法は、自分自身に電子メールを送信することです。 `+ s-​​nail `コマンドでこれを行うことができます。 ` sent `ファイルはMaildirが作成された後にのみ利用可能になるため、最初のメールの書き込みを無効にする必要があります。 ` -Snorecord +`オプションを渡すことでこれを行うことができます。

文字列を `+ s-​​nail +`コマンドにパイプしてメールを送信します。 コマンドを調整して、Linuxユーザーを受信者としてマークします。

echo 'init' | s-nail -s 'init' -Snorecord

次の応答が得られる場合があります。

OutputCan't canonicalize "/home//Maildir"

これは正常であり、この最初のメッセージを送信するときにのみ表示される場合があります。 `+〜/ Maildir +`ディレクトリを探すことで、ディレクトリが作成されたことを確認できます:

ls -R ~/Maildir

ディレクトリ構造が作成され、新しいメッセージファイルが `+〜/ Maildir / new +`ディレクトリにあることがわかります。

Output/home//Maildir/:
cur  new  tmp

/home//Maildir/cur:

/home//Maildir/new:
1463177269.Vfd01I40e4dM691221.mail.example.com

/home//Maildir/tmp:

メールが配信されたようです。

クライアントでメールを管理する

クライアントを使用してメールを確認します。

s-nail

新しいメッセージが待っているのが見えるはずです。

Outputs-nail version v14.8.6.  Type ? for help.
"/home/sammy/Maildir": 1 message 1 new
>N  1 [email protected]     Wed Dec 31 19:00   14/369   init

`+ ENTER +`を押すだけでメッセージが表示されます:

Output[-- Message  1 -- 14 lines, 369 bytes --]:
From [email protected] Wed Dec 31 19:00:00 1969
Date: Fri, 13 May 2016 18:07:49 -0400
To: [email protected]
Subject: init
Message-Id: <[email protected]>
From: [email protected]

init

「+ h 」と入力してから「 ENTER +」と入力すると、メッセージリストに戻ることができます。

h
Outputs-nail version v14.8.6.  Type ? for help.
"/home/sammy/Maildir": 1 message 1 new
>R  1 [email protected]     Wed Dec 31 19:00   14/369   init

このメッセージはあまり有用ではないので、「+ d 」で削除し、次に「 ENTER +」で削除できます。

d

「+ q 」と入力してから「 ENTER +」と入力して、ターミナルに戻るのを終了します。

q

クライアントでメールを送信する

テキストエディタにメッセージを入力して、メールの送信をテストできます。

nano ~/test_message

内部に、メールで送信するテキストを入力します。

〜/ test_message

Hello,

This is a test.  Please confirm receipt!

`+ cat `コマンドを使用して、メッセージを ` s-​​nail `プロセスにパイプできます。 これにより、デフォルトでLinuxユーザーとしてメッセージが送信されます。 値を他の値に変更する場合は、「-r +」フラグを使用して「From」フィールドを調整できます。

cat ~/ | s-nail -s '' -r  @

上記のオプションは次のとおりです。

  • + -s +:メールの件名

  • + -r +:メールの「From:」フィールドへのオプションの変更。 デフォルトでは、ログインしているLinuxユーザーがこのフィールドの入力に使用されます。 `+ -r +`オプションを使用すると、これをオーバーライドできます。

  • + user @ email.com +:メールを送信するアカウント。 これを、アクセスできる有効なアカウントに変更します。

送信したメッセージは、 `+ s-​​nail +`クライアント内で表示できます。 次のように入力して、対話型クライアントを再起動します。

s-nail

その後、次のように入力して送信メッセージを表示します。

file +sent

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

結論

Ubuntu 18.04サーバーでPostfixが設定されているはずです。 電子メールサーバーの管理は、初心者の管理者にとっては難しい作業ですが、この構成では、基本的なMTA電子メール機能が必要です。