接尾辞の紹介


このチュートリアルでは、基本的なメールサーバーを設定する方法と、その過程でのPostfix MTA(メール転送エージェント)について少し説明します。

Postfixは非常に柔軟です。 そのアーキテクチャは、電子メールを受信して他のサービスに渡すサービスの緩い構成に基づいています(受信側の外縁に「smtp」、配信側の外縁に「ローカル」と「仮想」などのサービスがあります)。メールの受信を再検討します)。 Postfix自体は、メールの受信、ルーティング、および配信のコア要件を実装し、残りはサードパーティの拡張機能に依存しています。

Postfixには数百の構成パラメーターがあります。 大規模な組織にビジネス要件を確実に提供するメールサーバーを管理する場合は、それらすべてに親密になる必要があります( man 5 postconf )。 このチュートリアルだけでは、有能なプロの電子メール管理者になるにはではありません。 ただし、postfixに慣れたり、自分自身と数人の友人のためにメールサーバーを設定したりする場合は、このチュートリアルとそれに続くチュートリアルが友人になります。

Dovecotの紹介


私は鳩小屋に多くの紹介の言葉を費やすつもりはありません。 Dovecotも巨大です(ここにdovecot 2wikiがあります)が、dovecotの非常に小さな機能セットのみが必要です。

この記事では、設定するほぼすべての設定について詳しく説明します。 必要に応じて、先に進んで説明をざっと読むことができます-自己責任で

このチュートリアルは、次の設定を前提としています(そしてそれを使用して構築されています)。

  • Debian 7.1 wheezy x64_86
  • 接尾辞2.9.6-2
  • ダブコット1:2.1.7-7

DebianベースのOSならどれでも問題ありませんが、Postfixは、Postfix 1.x、Postfix 2.9、Postfix 2.10など、相互に互換性のない設定や機能を備えたさまざまなバージョンで使用されています。このチュートリアルでは、Postfix2.9を使用しています。最先端ではありません。

このチュートリアルでは、あなたに関するいくつかのことも前提としています。

  • GNU / Linuxコマンドラインに慣れていて、DebianのようなGNU/Linuxシステムの一般的なレイアウトと動作原理に慣れていること。

  • ローカルシステムがGNU/Linuxであるか、適度に互換性があること(MinGW、Cygwin、Mac OS X、* BSD)

  • ドロップレットにルートシェルを取得する方法を知っていること

  • テキストエディタの使用方法を知っていること(例: vim、nano、emacs、または標準エディター、 ed)Linuxの場合

デフォルトでは、コマンドが入力され、ドロップレットのルートシェルからファイルが編集されます。 他のほとんどのDigitalOceanの記事と同様に、カスタマイズする必要のあるコマンドの一部は強調表示されます。

システム設定


ドロップレットをメールサーバーにする準備をするには、次の要素が必要です。

SSL証明書の設定


SSLの場合、証明書と秘密鍵が必要です。 このチュートリアルでは、証明書がに保存されていることを前提としています。 /etc/ssl/certs/mailcert.pem キーはに保存されます /etc/ssl/private/mail.key. キーがrootユーザーのみが読み取れることを確認してください。

Webサイトと電子メールのSSL証明書を設定する方法は、Webサイトの構造と使用するCA(自己署名、組織(sub)-ca、または商用caなど)によって異なります。 自己署名テスト証明書の作成は、実行するのと同じくらい簡単です

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/mail.key -out /etc/ssl/certs/mailcert.pem

質問されたすべての質問でEnterキーを押すだけで、デフォルト値のままになります。 この証明書を本番環境で使用しないでください。

ほとんどのCAでは、証明書署名要求を送信する必要があります。 (CSR)次のように生成できます。

sudo openssl req -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/mail.key -out mailcert.csr

このトランスクリプトのように、適切に照会された情報を入力します:(CSRに必要な情報について使用する予定のCAに確認してください)

Generating a 2048 bit RSA private key
.............................+++
................+++
writing new private key to 'mail.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: US
State or Province Name (full name) [Some-State]: Virginia
Locality Name (eg, city) []: Langley
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Network Services Association
Organizational Unit Name (eg, section) []: Infrastructure Services
Common Name (e.g. server FQDN or YOUR name) []: mail.mydomain.com
Email Address []: [email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

(この方法では、を使用して複数のドメインに有効な証明書を作成できないことに注意してください。 subjectAltName 追加の作業なしでフィールド-もう一度、CAのドキュメントを確認してください!)

DNSの設定


メールサーバーのIPを指すAレコードとメールサーバーのホスト名を指すMXレコードを使用してDNSを設定する必要があります。

DigitalOceanのDNSを使用している場合の方法は次のとおりです。

  • DigitalOceanパネルの「DNS」領域に移動します
  • 新しいドメインを作成するか、以前に作成したドメインを選択します
  • 右上の「レコードを追加」ボタンをクリックします
  • Aレコードを追加します。
  • もう一度[レコードの追加]をクリックして、Aレコードを指すMXレコードを追加します。

詳細については、ホスト名の設定およびDNSのヒントとコツの記事を参照してください。

DNSを確認する


DNSはインターネット全体に伝播するのに数時間かかりますが、数分後にDNSサーバーに設定する必要があります。 で確認できます掘る 亭主

[root@yourbase] ~# dig MX mydomain.com +short @ns1.digitalocean.com
50 mail.mydomain.com.
[root@yourbase] ~# host mail.mydomain.com ns1.digitalocean.com
Using domain server:
Name: ns1.digitalocean.com
Address: 198.199.120.125#53
Aliases:

mail.mydomain.com has address 82.196.9.119

Postfix


ここで、ローカルユーザー宛てのメールを送受信するようにPostfixを設定します。

パッケージ


DebianのデフォルトのMTAはEximです。 それでオフ! また、postfixをインストールした後は、まだ実行したくないので停止します。

aptitude remove exim4 && aptitude install postfix && postfix stop

小さな挿入:Postfixはそれ自体でデーモンを管理し、サービス(init.d)システムを必要としません。 postfix start、postfix stop、およびpostfix reloadは、service postfix start、service postfix stop、およびservicepostfixreloadと同等です。

Postfix設定


Postfixには2つの主要な構成ファイルがあります。構成オプションとして考えるものを指定するmain.cfと、postfixが実行するサービスを指定するmaster.cfです。

まず、 master.cf ファイルを構成します( /etc/postfix/). 「submission」と呼ばれる追加の「smtpd」インスタンスを追加します。これは、信頼できるクライアントからメールを受け取り、世界中に配信します。これは、他の誰にも許可されていません。 これを行うには、 master.cf を開き(何が起こっているのかを理解したい場合は man 5 master を参照)、送信構成のコメントを解除し、SASLを有効にするオプションを追加します。

submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_wrappermode=no
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

これには少し説明が必要です。 The -o ... オプションは、デフォルトから取得された設定、または後で設定する構成で定義された設定をオーバーライドします。 簡単に言うと、ここで行われるのは、TLSを使用する「送信」デーモンが外部接続を保護し、dovecotを介したSASLが接続しているクライアントのユーザー名とパスワードをチェックできるようにすることです。 (後で鳩小屋に設置します)。

重要な詳細は、見ることができないものです。 smtpd_recipient_restrictions reject_unauth_destination がありません。これはデフォルトとして存在し、リレーを制限します。

次に、main.cfに移動します。 ここでは白紙の状態から始めます-実行します cp /etc/postfix/main.cf /etc/postfix/main.cf.orig デフォルトの設定ファイルを保存したい場合(これも /usr/share/postfix/main.cf.dist ただし)、それを開いてクリアします!

最初にネットワーク情報を設定しましょう:(postfixがメールを処理しているドメインに関する情報と少しの追加情報)

myhostname = mail.domain.com
myorigin = /etc/mailname
mydestination = mail.domain.com, domain.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

ホスト名とデフォルトのオリジンを設定します。これは、debianの慣例により / etc /mailnameから供給されます。 / etc / mailname がない場合は、明示的に設定できます。 デフォルトのオリジンは、ローカルユーザーの「From」アドレスを作成するために使用されます。 mydestination は、postfixがメールを受け入れるドメインを最終的な宛先として設定し、「relayhost」を空に設定してメールのリレーを無効にします(リレーとは、メールを受け入れてから、メールの最終的な宛先ではないメールサーバーに転送することを意味しますメールと私たちはそれを必要としません;それは便利です例えば 中央のメールサーバーがネットワークを離れる前にメールをチェックする必要がある企業イントラネット内。)

*追記:これは「オープンリレー」という用語とは関係ありません。これは、認証なしで誰からの電子メールも受け入れ、自分のネットワークにないドメインのMTAに送信するメールサーバーです。 relay_* 設定が使用されますが、デフォルトのままにして無効にします)

次に、ローカルエイリアスマップを設定しましょう。 デフォルト設定を維持しているため、この設定を設定する必要はありませんが、後でエイリアスマップを定義する別の方法を追加する場合に備えて、明示的に設定することをお勧めします。 (実際のDBMSのように)

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

次に、SSLを設定します。

smtpd_tls_cert_file=/etc/ssl/certs/mailcert.pem
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level=may
smtpd_tls_protocols = !SSLv2, !SSLv3

証明書ファイルとそのキーを設定し、tlsを有効にして、キャッシュファイルを設定します。 次に、TLSをオプションにします。これは、RFC2487ごとにパブリックSMTPサーバーでTLSを必須にすることが許可されていないためです。 また、SSLv2とSSLv3も許可されていないため、TLSv1.0以降のみが許可されます(理由を知りたい場合は、SSLチュートリアルをお読みください。一言で言えば、SSLv2とSSLv3は廃止されています)。

デフォルトでは問題ありませんが、後で追加する場合に備えて明示的に指定する必要があるもう1つの設定は、local_recipient_mapsです。

local_recipient_maps = proxy:unix:passwd.byname $alias_maps

この設定は、ルックアップテーブルをチェックし、テーブルに見つからないユーザーへの電子メールを拒否するようにPostfixに指示します。 これは重要です。なぜなら、代替の振る舞いは local_recipient_maps は設定されていません。最初にメールを受け入れ、後でバウンスします。 これにより「後方散乱」が発生します。postfixが(smtpdサービスで)すべての有効なユーザーをすぐに判別できない場合(次のように) local_recipients_maps が設定されていない場合、メールを受け入れ、後で配信不能通知を送信します(smptdによってメールが渡された後、メールが配信不能であることが判明した場合)。 これらの配信不能通知は通常、アドレスがスパムや詐欺メールで偽装され、スパムの問題の原因となっている無実の人々を襲います。

Sane Alias Config


エイリアス設定で設定する必要のある重要なメールアカウントがいくつかあります。 たとえば、 SMTP RFC は、メールを受け入れる公的にアクセス可能なメールサーバーは、「postmaster」アカウントへのメールも受け入れる必要があることを義務付けており、「hostmaster」、「abuse」、「webmaster」を期待する人もいます。 、および存在する他のメールボックス。 これらのメールアドレスをrootまたは特定のユーザーにリダイレクトできます。 これが正しいデフォルトです /etc/aliasesrootのメールをチェックすると仮定します。

mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root

そのすべてを特定のローカルユーザーにリダイレクトする場合は、「あなたの名前」を追加するだけです。

root: yourname

Postfixはエイリアスのチェーン全体を解決し、それらすべてのメールアドレスを「yourname」に転送します。 (これは、 aliases 仕様を使用して、 local デーモンによって実行されます。)

「エイリアス」が言うように、 / etc / aliases ファイルを更新した後、実行する必要があります

newaliases

Postfixが高速ルックアップに使用するデータベースにファイルをコンパイルします。

Dovecot


これはテキストの壁が少なくなります! 深呼吸して、ほぼ完了です。

パッケージ


aptitude install dovecot-core dovecot-imapd

それをする必要があります。 すべてのデフォルトパッケージが必要な場合は、

aptitude install dovecot-common

次に、 /etc/dovecot/dovecot.conf そして、ファイルを再度クリアします。 (今回は重要です-デフォルトの構成には、に従属する構成ファイルの束が含まれています /etc/dovecot/conf.d 私たちが望まないこと)。

次に、次の設定を入力します。

disable_plaintext_auth = no
mail_privileged_group = mail
mail_location = mbox:~/mail:INBOX=/var/mail/%u
userdb {
  driver = passwd
}
passdb {
  args = %s
  driver = pam
}
protocols = " imap"

これにより、プレーンテキスト認証が有効になり(「プレーンテキスト」認証はTLSを介してトンネリングされます)、dovecotに mail ローカルメールボックス(およびメールボックスの場所)にアクセスするためのシステムグループ、UNIX認証システムを使用してユーザーを認証し、imapのみを有効にします。

必要に応じて、dovecotにTrashandSentフォルダーをメールボックスに自動的に追加させることができます。

protocol imap {
  mail_plugins = " autocreate"
}
plugin {
  autocreate = Trash
  autocreate2 = Sent
  autosubscribe = Trash
  autosubscribe2 = Sent
}

次に、postfixがdovecotの認証に便乗するために使用できるソケットを開く必要があります。

service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
}

そして最後にssl設定:

ssl=required
ssl_cert = </etc/ssl/certs/mailcert.pem
ssl_key = </etc/ssl/private/mail.key

アングルブラケットに注意してください! 彼らはdovecotにファイルから読み取るように指示します。

終わり


すべての構成ファイルを保存して閉じ、実行します

newaliases
postfix start
service dovecot restart

そして、あなたは行ってもいいはずです。 メールクライアントで設定をテストします。例: Mozillaサンダーバード。 どこからでも、どこからでもメールを送受信できるはずです!

続く


仮想メールボックス(ローカルユーザーアカウントに関連付けられていないが、代わりにローカルデータベースを使用して構成できるメールボックス)を追加する場合は、パート2に進みます。***

これで、ドロップレット上の端末から、双方向で電子メールを送信することが機能することをテストできます。

~# mail [email protected]
Subject: test email from postfix
this is a test
.
EOT

「root@yourdomain .com」からのメールは、まもなく「someotheremail @gmail .com」に届くはずです(もちろん、あなたが管理しているメールアドレスを入力してください)。 返信してmailに再度電話をかけると、次のように表示されます(メールが到着するまでに1分かかる場合があります)。

~# mail
Heirloom mailx version 12.5 6/20/10.  Type ? for help.
"/var/mail/root": 1 message
>N  1 Your Name          Wed Nov 13 23:45   41/1966  Re: test email from postf

また、Enterキーを押すと、メッセージが表示されます。 (次に、 q と入力し、 Enter を押してメールクライアントを終了します)

同じことがローカルの電子メールクライアントでも機能します。 新しいシステムユーザーを設定します。

~# adduser joe
Adding user `joe' ...
Adding new group `joe' (1001) ...
Adding new user `joe' (1001) with group `joe' ...
Creating home directory `/home/joe' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: Enter password here
Retype new UNIX password: Enter password here
passwd: password updated successfully
Changing the user information for joe
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y

ここに入力したパスワードは、電子メールに使用するパスワードです。 ジョーはアドレスを使用できるようになりました [email protected] Thunderbirdのようなローカルメールクライアントを使用します。 Thunderbirdで、新しいアカウントを追加するだけです(File -> New -> Existing Mail Account)と入力します [email protected] ダイアログのパスワード。

メールクライアントが必要な設定を自動検出しない場合:IMAP接続のユーザー名は次のとおりです。 joe、ポートは143で、認証方法はSTARTTLSを介した暗号化されていないパスワードです。 SMTPの場合も同じですが、ポート587です。

何かが機能していない場合は、システムログでエラーメッセージを確認してください。 tail -n 50 /var/log/syslog とメールログで tail -n 50 /var/log/mail.log.

提出者: Lukas Erlacher