web-dev-qa-db-ja.com

安全なIMAP電子メールサーバーを設定する最も簡単な方法は?

メールプロバイダーとしてのGoogleを廃止し、専用サーバーに完全なメールソリューションをセットアップしたいと思います。問題:問題が発生した場合にすべてを再設定するのが面倒にならないように、私は設定ができるだけ単純であることを望みます。

前提条件

  • マシン上のユーザーアカウントは1つだけです。
    • (名前diti;メインのメール[email protected];他のエイリアスはリダイレクトされますが、電子メールクライアントはさまざまなエイリアスを管理し、それに応じて対応できます)
  • MySQLを使用しないことが望ましいです。
    • (データのバックアップと復元の場合、および簡単にするために、機能している電子メールサーバーを取得する前にMySQLをインストールして保護する必要がない方が良いです)
  • 電子メールは外部からアクセスできます(IMAPおよびSMTP)。
  • IMAPおよびSMTP認証用のSSL/TLS暗号化(私は CAcert 証明書を使用していますが、重要ですか?).

シンプルさ、IMAP/SMTPアクセス、安全な認証は、Googleや他の場所を離れたいと思っているすべての人が望んでいる「基本的な」機能だと思います。私が間違っていて、より簡単な解決策(たとえば、ownCloudのような解決策、すべてが含まれている)がある場合は、喜んでお聞かせください。

PostfixとDovecotを組み合わせるのが良い方法だと思います。ちなみに、私はDebianを実行しています。

これまでに見つけた情報

  • フランス語の記事 は、完全で安全な電子メールソリューションを設定する方法をveryで詳しく説明しています。それは長く、メンテナンスが難しく、バックアップと復元などが困難です。また、DNSキャッシュは必要ですか?
  • Gentoo wiki(Complete_Virtual_Mail_Server/SSL_Certificatesページ)はCAcert証明書の使用について言及していますが、それについて明確ではなく(これらすべてのSubjectAltNameサブドメインが必要ですか?)、Postfixを使用していません(Courierの方が難しいと読みました)。
  • セルフホスティングに関するさまざまなチュートリアルは、すべて異なり、めったに彼らが何をしているかを説明せず、なぜ(リモートアクセスのセルフホスティング電子メールを設定するのは複雑に思われるそれでは、なぜ「ダミー」の説明なしにコマンドのリストを提供するだけなのでしょうか?)。

私は私が正しいことを尋ねたことを願っています、そしてそれらがあまりに愚かではないことを。

17
Diti
  • いいえ、サーバーにDNSキャッシュを設定する必要はありません。サーバー近くにあるキャッシュDNSリゾルバーを使用する必要がありますが、ほとんどのホスティング会社はデータセンター全体に対して独自のリゾルバーを既に実行しており、サーバーがそれらを使用するように構成していますデフォルト。

  • デフォルトでは、PostfixとDovecotの両方がすべてにローカルアカウントを使用します。 ditiという名前のLinuxアカウントがある場合は、それを使用してDovecotにログインし、Postfixを Dovecotに対してSMTPログインを検証する に設定できます。

  • すべてのメールを同じアカウントに送信することに問題がない場合は、プレーンエイリアス(/etc/aliasesなど)を設定して、kra@またはpostmaster@のメールをditiアカウント。

  • これらすべてのsubjectAltNamesは必要ありません。必要なのは、実際に使用するドメイン名useだけです。 mail.diti.meまたはglaux.diti.me。ドメイン自体を含める必要があるかどうかはわかりません(例:diti.me)。


以下では、ドメインにこのサーバーを指すように構成されたMXレコードが既にあると想定しています。数か月後、私はいつも「これは一体何なのだろう」といつも思ってしまうので、私は一般的に私の設定を適度に明確に保つようにします。

1。 まず、postfixおよびdovecot-imapdパッケージをインストールします。 Postfix設定についてプロンプトが表示されたら、「インターネットサイト」オプションを選択し、メール名としてditi.meを入力します。この時点で、すでに[email protected]としてメールを送受信でき、IMAPに接続することもできます。

ただし、まだSSLがなく、SMTP経由で外部からメールを送信することも、メールを保存する適切な場所もありません(デフォルトは/var/mailのmboxファイルであり、信頼性が低く、特にパフォーマンスが低下しますIMAPで)。

2。 すでにSSL証明書がある場合は、それを/etc/ssl/private/diti.me.pemに入れ、秘密鍵を/etc/ssl/private/diti.me.keyに入れます。正確な場所は実際には重要ではありませんが、/etc/ssl/privateはDebianが保管する場所です。

PostfixとDovecotがそれらにアクセスできるように、両方のファイルがssl-certグループによって所有され、読み取り可能であることを確認してください。また、gpasswd -aを使用して、両方のデーモンのアカウントをそのグループに追加します。

3。 Debianの自動生成されたPostfix main.cfも少し混乱しているので、クリーンアップした最小バージョンを投稿します。

#サーバー情報
 mydomain = diti.me 
 myorigin = $ mydomain 
 #その他のさまざまなパラメーターは、これら2つの変数をデフォルト値として使用します。#SMTPサービス
 smtpd_tls_security_level = may 
 smtpd_tls_cert_file = /etc/ssl/private/diti.me-mail.pem
smtpd_tls_key_file = /etc/ssl/private/diti.me-mail.key 
 #これにより、すべての受信SMTP接続でSTARTTLSを使用できるようになります。
#/ etc内のファイルにアクセスするには、 `ssl-cert`グループに` postfix`を追加する必要があることに注意してください
#/ssl/private。# ポリシー
 mynetworks = [:: 1]/128、127.0.0.0/8、[:: ffff:127.0.0.0]/104 
 #これは、「信頼されている」と見なされ、このサーバーを使用してIPアドレスを一覧表示します。
#このメールを外部(つまり、他のドメイン)に送信します。 
#デフォルトでは、「localhost」のみが許可されます。他のすべての人から
宛のメールのみが受信されます。
 mydestination = $ mydomain、localhost 
 #任意のIPアドレスからのメールを受け入れるドメインのリスト。#配信
 alias_maps = hash:/ etc/aliases 
 #これにより、システム全体のエイリアスが保持されます。 
#デフォルト値にはNISが含まれる場合があるため、意味をなさないため、明示的に設定することをお勧めします。
 recipient_delimiter = + 
 #最初の '+'でアドレスのローカル部分を分割するようpostfixに指示します。
#いわゆる「プラスアドレッシング」:diti + foo @に送信されたメールは配信されます
# diti @メールボックス。

Dovecotの場合、Debianはデフォルトのサンプル設定を使用するだけで十分であり、各オプションが説明されています。

構成を変更するときはいつでも、デーモンをpostfix reloaddoveadm reloadでリロードしてください。

4。 デフォルトでは、Postfixは/var/mail/$USERmbox形式でメールを配信します。これは非常に簡単です(テキストエディタで簡単に表示できます)。ただし、メッセージを移動したり、メッセージを「既読」または「未読」としてマークしたりするたびにファイル全体を書き換える必要があるため、特にIMAPには多くの問題があります。

Maildirを使用するように両方のデーモンを変更します。 (他の形式もありますが、MTA、MDA、IMAPサーバーなどに固有の傾向があります。Maildirは広くサポートされています。)

/etc/postfix/main.cfの「Delivery」セクションに以下を追加します。

 home_mailbox =メール/

/etc/dovecot/conf.d/10-mail.confで、同じパスを使用するようにDovecotを構成します。

 mail_location = maildir:〜/ Mail 

5。 ある時点で、DovecotにSSLも使用するように指示する必要があります。関連する設定は/etc/dovecot/conf.d/10-ssl.confにあります。実際、DovecotのDebianパッケージはすでにでSSLを使用していますが、自己署名証明書ではほとんど役に立たないのです。独自の証明書を使用するように構成します。

 ssl =はい
 
 ssl_cert = </etc/ssl/private/diti.me-mail.pem 
 ssl_key = </ etc/ssl/private/diti.me-mail.key 

6。 これで、メールを外部に送信して受信できます。 SMTP経由でメールクライアントに接続することにより、外部からfromを送信できるようにPostfixを構成する必要があります。

最初にPostfixにDovecotを使用してログインを確認するように伝えます。以下の説明は、主に Dovecotのwiki から取得されます。

Dovecotの/etc/dovecot/conf.d/10-master.confは、Postfixがアクセスできるソケットをリッスンする必要があります。デフォルトの構成には、すでにコメント化された例があります。

サービス認証{
 ... 
 unix_listener/var/spool/postfix/private/auth {
 mode = 0660 
 user = postfix 
グループ= postfix 
} 
 ... 
} 

そしてPostfixはそれを使う必要があります– /etc/postfix/main.cf再び:

#認証
 smtpd_sasl_type = dovecot 
 smtpd_sasl_path = private/auth 
 #その他の可能なタイプは、「cyrus」で、Cyrus SASLの「saslauthd」
デーモン用です。 SASLサーバーとして適切に機能するため、ここではDovecotを選択します。
#両方のデーモンの認証を処理するほうが簡単です。

7。 上記ではsmtpd_sasl_auth_enableがどこにも設定されていないことに注意してください。現在の規則では、SMTP認証をグローバルに有効にすることは(== --- ==)しないが、tcp/25を純粋に「サーバー間の」SMTPポートとして保持することです。一方、ユーザーからの新しいメッセージは、認証が必要な「メール送信」ポートであるtcp/587上のSMTPを介して受け入れられます。一部のISPは、スパムのためにtcp/25をブロックしますが、tcp/587は通常より安全であるため、開いたままにします。

SASL認証を使用して、/etc/postfix/master.cfの「送信」ポートを有効にします。デフォルトのmaster.cfには、コメントを外す必要のある行がすでに含まれていますが、それらのsomeはまだ省略されているはずです。

送信inet n----smtpd
 -o syslog_name = postfix/submission 
 -o smtpd_tls_security_level = encrypt 
 #「送信」ポートは、オプションにする代わりに、TLSを必要とします
 -o smtpd_sasl_auth_enable = yes 
 #...また、ユーザーがログインできるようにします。
#-o smtpd_reject_unlisted_recipient = no 
#-o smtpd_client_restrictions = $ mua_client_restrictions 
#-o smtpd_helo_restrictions = $ mua_helo_restrictions 
#-o smtpdions_sender_sender_sender_sender 。] #これらの4つのオプションはコメント化したままにすることができます。有効にすると、
# 'main.cf'にカスタム制限ルールを設定することを期待しますが、
#デフォルトのルールで十分です。
 -o smtpd_recipient_restrictions = permit_sasl_authenticated、reject 
 #デフォルトのrecipient_restrictionsはIPアドレスをチェックし、
#$ mydestinationをチェックします。 「送信」ポートでは、ユーザーがログインしている間はすべて許可します
#。ただし、すべての匿名メールを拒否します。
 -o milter_macro_daemon_name = ORIGINATING 
 #後でDKIMプロキシなどを設定することにした場合、これにより
#ユーザーが送信したメールと受信した受信メールを区別できるようになります。
#デフォルト設定の一部であるため、含まれていますこちらも。

古いスタイルの「暗黙のSSL」ポート(tcp/465)を必要とするメールクライアントがある場合は、master.cfsmtps行のコメントを解除できます。その場合は、設定を次のようにしてください。 submissionポートのもの。

8。 最後に、/etc/aliasesを編集して、アカウントのエイリアスを設定します。 postmasterエイリアスは基本的に必須です。メールサーバーに問題がある場合の連絡先です。 rootおよび他の同様のエイリアスを指すことも良いです。

基本的なフォーマットはaliases(5)に文書化されています:

postmaster: root
admin:      root
root:       diti
kra:        diti

このファイルを編集するたびに、postaliasまたはnewaliasesを使用して、ハッシュされたデータベース/etc/aliases.dbを更新します。

これで、PostfixとDovecotに関する限り、ditiというアカウントが1つありますが、kra@...に送信されたメールもそこに転送されます。一部のメールクライアント(Thunderbirdなど)では、1つのメールサーバーで複数の「ID」または「ペルソナ」をサポートしているため、異なる「差出人」アドレスから選択できます。

それだけです。後でprocmail、仮想ドメイン、SPF、またはDKIMの指示を返す場合があります。

19
user1686