前書き
Postfixは人気のあるオープンソースのMail Transfer Agent(MTA)であり、Linuxシステムで電子メールをルーティングおよび配信するために使用できます。 インターネット上のパブリックメールサーバーの約25%がPostfixを実行していると推定されます。
このガイドでは、Ubuntu 18.04サーバーでPostfixをすばやく起動して実行する方法を説明します。
前提条件
このガイドに従うには、sudo
権限を持つroot以外のユーザーにアクセスできる必要があります。 Ubuntu 18.04 initial server setup guideをたどって、必要なユーザーを作成できます。
Postfixを適切に設定するには、Ubuntu 18.04サーバーを指す完全修飾ドメイン名が必要です。 this guideをフォローすると、DigitalOceanでドメイン名を設定するためのヘルプを見つけることができます。 メールの受け入れを計画している場合は、メールサーバーを指すMXレコードも持っていることを確認する必要があります。
このチュートリアルでは、FQDNがmail.example.com
のホストを構成していることを前提としています。
[[step-1 -—- install-postfix]] ==ステップ1—Postfixをインストールします
PostfixはUbuntuのデフォルトリポジトリに含まれているため、インストールは簡単です。
まず、ローカルのapt
パッケージキャッシュを更新してから、ソフトウェアをインストールします。 いくつかの追加のプロンプトに答えるために、DEBIAN_PRIORITY=low
環境変数をインストールコマンドに渡します。
sudo apt update
sudo DEBIAN_PRIORITY=low apt install postfix
次の情報を使用して、環境に合わせてプロンプトを正しく入力してください。
-
General type of mail configuration?:これはインフラストラクチャのニーズに一致するため、このためにInternet Siteを選択します。
-
System mail name:これは、アドレスのアカウント部分のみが指定されている場合に、有効な電子メールアドレスを作成するために使用されるベースドメインです。 たとえば、サーバーのホスト名は
mail.example.com
ですが、システムメール名をexample.com
に設定して、ユーザー名user1
を指定すると、Postfixがアドレス[email protected]
を使用するようにします。 )s。 -
Root and postmaster mail recipient:これは、
root@
およびpostmaster@
宛てのメールを転送するLinuxアカウントです。 これにはプライマリアカウントを使用します。 この場合、sammyです。 -
Other destinations to accept mail for:これは、このPostfixインスタンスが受け入れるメールの宛先を定義します。 このサーバーが受信する他のドメインを追加する必要がある場合は、ここに追加してください。そうでない場合は、デフォルトで問題なく動作します。
-
Force synchronous updates on mail queue?:ジャーナリングファイルシステムを使用している可能性が高いため、ここでNoを受け入れます。
-
Local networks:これは、メールサーバーがメッセージを中継するように構成されているネットワークのリストです。 デフォルトはほとんどのシナリオで機能するはずです。 変更する場合は、ネットワーク範囲に関して非常に制限が厳しいことを確認してください。
-
Mailbox size limit:これを使用してメッセージのサイズを制限できます。 「0」に設定すると、サイズ制限が無効になります。
-
Local address extension character:これは、アドレスの通常の部分を拡張子(動的エイリアスの作成に使用)から分離するために使用できる文字です。
-
Internet protocols to use:PostfixがサポートするIPバージョンを制限するかどうかを選択します。 目的に合わせて「すべて」を選択します。
明確にするために、これらはこのガイドで使用する設定です。
-
General type of mail configuration?:インターネットサイト
-
System mail name:example.com(mail.example.comではない)
-
Root and postmaster mail recipient:サミー
-
Other destinations to accept mail for:$ myhostname、example.com、mail.example.com、localhost.example.com、localhost
-
Force synchronous updates on mail queue?:いいえ
-
Local networks:127.0.0.0/8 [:: ffff:127.0.0.0] / 104 [:: 1] / 128
-
Mailbox size limit:0
-
Local address extension character:
-
Internet protocols to use:すべて
これらの設定を再調整するために戻る必要がある場合は、次のように入力してください。
sudo dpkg-reconfigure postfix
プロンプトには、以前の応答が事前に入力されます。
完了したら、もう少し設定を行って、システムを希望どおりにセットアップできます。
[[step-2 -—- tweak-the-postfix-configuration]] ==ステップ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'
[[step-3 -—- map-mail-addresses-to-linux-accounts]] ==ステップ3—メールアドレスをLinuxアカウントにマップする
次に、仮想マップファイルを設定できます。 テキストエディターでファイルを開きます。
sudo nano /etc/postfix/virtual
仮想エイリアスマップテーブルは、非常に単純な形式を使用します。 左側には、メールを受け取るアドレスをリストできます。 その後、空白で区切って、メールを配信するLinuxユーザーを入力します。
たとえば、[email protected]
と[email protected]
で電子メールを受け入れ、それらの電子メールをsammy
Linuxユーザーに配信したい場合は、次のようにファイルを設定できます。
/etc/postfix/virtual
[email protected] sammy
[email protected] sammy
すべてのアドレスを適切なサーバーアカウントにマッピングしたら、ファイルを保存して閉じます。
次のように入力してマッピングを適用できます。
sudo postmap /etc/postfix/virtual
Postfixプロセスを再起動して、すべての変更が適用されたことを確認します。
sudo systemctl restart postfix
[[step-4 -—- adjust-the-firewall]] ==ステップ4—ファイアウォールを調整します
UFWファイアウォールを実行している場合は、サーバーの初期セットアップガイドで構成されているように、Postfixの例外を許可する必要があります。
次のように入力して、サービスへの接続を許可できます。
sudo ufw allow Postfix
Postfixサーバーコンポーネントがインストールされ、準備ができました。 次に、Postfixが処理するメールを処理できるクライアントを設定します。
[[step-5 -—- setting-up-the-environment-to-match-the-mail-location]] ==ステップ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
[[step-6 -—- install-and-configure-the-mail-client]] ==ステップ6—メールクライアントをインストールして構成する
配信されるメールを操作するために、s-nail
パッケージをインストールします。 これはBSDxmail
クライアントのバリアントであり、機能が豊富で、Maildir形式を正しく処理でき、ほとんどの場合下位互換性があります。 mail
のGNUバージョンには、ソース形式に関係なく、常に既読メールを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ファイルを作成します。
完了したら、ファイルを保存して閉じます。
[[step-7 -—- initialize-the-maildir-and-test-the-client]] ==ステップ7— Maildirを初期化し、クライアントをテストします
これで、クライアントをテストできます。
ディレクトリ構造の初期化
ホームディレクトリ内にMaildir構造を作成する最も簡単な方法は、自分自身に電子メールを送信することです。 これは、s-nail
コマンドで実行できます。 sent
ファイルは、Maildirが作成された後でのみ使用できるため、最初の電子メールの書き込みを無効にする必要があります。 これを行うには、-Snorecord
オプションを渡します。
s-nail
コマンドに文字列をパイプして電子メールを送信します。 コマンドを調整して、Linuxユーザーを受信者としてマークします。
echo 'init' | s-nail -s 'init' -Snorecord sammy
mayは次の応答を受け取ります。
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:
1463177269.Vfd01I40e4dM691221.mail.example.com
/home/sammy/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 ~/test_message | s-nail -s 'Test email subject line' -r from_field_account [email protected]
上記のオプションは次のとおりです。
-
-s
:メールの件名 -
-r
:電子メールの「From:」フィールドへのオプションの変更。 デフォルトでは、ログインしているLinuxユーザーがこのフィールドの入力に使用されます。-r
オプションを使用すると、これをオーバーライドできます。 -
[email protected]
:メールの送信先のアカウント。 これを、アクセスできる有効なアカウントに変更します。
送信したメッセージは、s-nail
クライアント内で表示できます。 次のように入力して、対話型クライアントを再起動します。
s-nail
その後、次のように入力して送信メッセージを表示します。
file +sent
受信メールに使用するのと同じコマンドを使用して、送信メールを管理できます。
結論
これで、Ubuntu 18.04サーバーでPostfixが構成されました。 電子メールサーバーの管理は、初心者の管理者にとっては難しい作業ですが、この構成では、基本的なMTA電子メール機能が必要です。