序章

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

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

前提条件

このガイドに従うには、root以外のユーザーにアクセスできる必要があります。 sudo 特権。 Ubuntu 16.04初期サーバーセットアップガイドに従って、必要なユーザーを作成できます。

Postfixを適切に設定するには、Ubuntu16.04サーバーを指す完全修飾ドメイン名が必要です。 このガイドに従って、DigitalOceanでドメイン名を設定するためのヘルプを見つけることができます。 メールの受け入れを計画している場合は、メールサーバーも指すMXレコードがあることを確認する必要があります。

このチュートリアルでは、FQDNが次のホストを構成していると想定します。 mail.example.com.

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

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

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

  1. sudo apt-get update
  2. sudo DEBIAN_PRIORITY=low apt-get install postfix

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

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

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

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

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

  1. sudo dpkg-reconfigure postfix

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

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

ステップ2:Postfix設定を微調整する

次に、パッケージが要求しなかったいくつかの設定を調整できます。

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

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

  1. sudo postconf -e 'home_mailbox= Maildir/'

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

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

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

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

  1. sudo nano /etc/postfix/virtual

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

たとえば、次のアドレスでメールを受け取りたい場合 [email protected][email protected] そして、それらの電子メールをに配信してもらいたい sammy Linuxユーザーの場合、次のようにファイルを設定できます。

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

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

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

  1. sudo postmap /etc/postfix/virtual

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

  1. sudo systemctl restart postfix

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

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

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

  1. sudo ufw allow Postfix

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

ステップ5:メールの場所と一致するように環境を設定する

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

手順6:メールクライアントをインストールして構成する

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

をインストールするには s-nail パッケージ型式:

  1. sudo apt-get 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

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

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

ステップ7:Maildirを初期化し、クライアントをテストする

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

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

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

文字列をパイプで送信してメールを送信します mail 指図。 Linuxユーザーを受信者としてマークするようにコマンドを調整します。

  1. echo 'init' | mail -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: 1463177269.Vfd01I40e4dM691221.mail.example.com /home/sammy/Maildir/tmp:

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

クライアントによるメールの管理

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

  1. mail

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

Output
s-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 と入力すると、メッセージリストに戻ることができます。

  1. h
Output
s-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で削除できます。

  1. d

q と入力して、ターミナルに戻るのをやめます。

  1. q

クライアントとのメール送信

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

  1. nano ~/test_message

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

〜/ test_message
Hello,

This is a test.  Please confirm receipt!

を使用して cat コマンド、メッセージをパイプで送ることができます mail 処理する。 これにより、デフォルトでLinuxユーザーとしてメッセージが送信されます。 「From」フィールドは、 -r その値を別の値に変更する場合は、フラグを立てます。

  1. cat ~/test_message | mail -s 'Test email subject line' -r from_field_account user@email.com

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

  • -s:メールの件名
  • -r:電子メールの「From:」フィールドへのオプションの変更。 デフォルトでは、ログインしているLinuxユーザーがこのフィールドに入力するために使用されます。 The -r オプションを使用すると、これをオーバーライドできます。
  • [email protected]:メールの送信先のアカウント。 これを、アクセスできる有効なアカウントに変更してください。

あなたはあなたの中であなたの送信されたメッセージを見ることができます mail クライアント。 次のように入力して、インタラクティブクライアントを再起動します。

  1. mail

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

  1. file +sent

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

結論

これで、Ubuntu16.04サーバーでPostfixが構成されているはずです。 電子メールサーバーの管理は、初心者の管理者にとって難しい作業になる可能性がありますが、この構成では、基本的なMTA電子メール機能を使用して開始する必要があります。