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

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

メール プロバイダーとしての Google をやめて、専用サーバーに完全なメール ソリューションを設定したいと考えています。問題: 問題が発生した場合にすべてを再度設定するのが面倒にならないように、設定はできるだけシンプルにしておきたいです。

前提条件

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

シンプルさ、IMAP/SMTP アクセス、安全な認証は、Google やその他のサービスから離れたいと思っているすべての人が望む「基本」機能だと私は信じています。もし私が間違っていて、もっとシンプルなソリューション (たとえば、すべてが含まれている ownCloud のようなソリューション) があるなら、ぜひ教えてください。

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

これまでに見つけた情報

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

私が尋ねたことが適切であり、あまり馬鹿げた質問ではなかったことを願っています。

答え1

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

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

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

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


以下では、ドメインにこのサーバーを指すように MX レコードが既に設定されていることを前提としています。私は通常、設定をできるだけ明確にしておくようにしています。なぜなら、数か月後には「これは一体何のためにあるのか」といつも疑問に思うことになるからです。

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

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

2.すでに SSL 証明書をお持ちの場合は、それを に/etc/ssl/private/diti.me.pem、秘密鍵を に入れてください/etc/ssl/private/diti.me.key。正確な場所は実際には重要ではありませんが、/etc/ssl/privateDebian がそれらを保管する場所は です。

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

3.Debian の自動生成された Postfixmain.cfも少々乱雑なので、クリーンアップした最小限のバージョンを投稿します。

# サーバー情報
マイドメイン = diti.me
myorigin = $mydomain
  # 他のさまざまなパラメータでは、これら 2 つの変数がデフォルト値として使用されます。

# SMTP サービス
smtpd_tls_security_level = 5月
smtpd_tls_cert_file = /etc/ssl/private/diti.me-mail.pem
smtpd_tls_key_file = /etc/ssl/private/diti.me-mail.key
  # これにより、すべての受信 SMTP 接続で STARTTLS を使用できるようになります。
  # `postfix` を `ssl-cert` グループに追加する必要があることに注意してください。
  # /etc/ssl/private 内のファイルにアクセスします。

# ポリシー
マイネットワーク = [::1]/128, 127.0.0.0/8, [::ffff:127.0.0.0]/104
  # これは「信頼できる」とみなされ、使用できるIPアドレスをリストします
  # このサーバーは外部(他のドメイン)にメールを送信します。
  # デフォルトでは、「localhost」のみが許可されます。他のユーザーからのメールは
  $mydestination 内の # ドメインが受け入れられます。
宛先 = $mydomain、localhost
  # 任意の IP アドレスからのメールを受け入れるドメインのリスト。
# 配達
alias_maps = ハッシュ:/etc/aliases
  # これはシステム全体のエイリアスを保持します。明示的に設定することをお勧めします。
  # デフォルト値には NIS が含まれることがありますが、これは意味がありません。
受信者区切り文字 = +
  # アドレスのローカル部分を最初の '+' で分割するように postfix に指示します。
  # いわゆる「プラスアドレス指定」: diti+foo@ に送信されたメールは配信されます
  # diti@ メールボックスに送信します。

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

設定を変更するたびに、postfix reloadおよび/またはを使用してデーモンをリロードしますdoveadm reload

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

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

/etc/postfix/main.cf、「配信」セクションに次の内容を追加します。

home_mailbox = メール/

同じパスを使用するように Dovecot を設定します/etc/dovecot/conf.d/10-mail.conf

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.これで、外部にメールを送信したり受信したりできるようになりました。送信を許可するには、Postfixを設定する必要があります。からSMTP 経由でメール クライアントに接続して外部に送信します。

まず、PostfixにDovecotを使ってログインを検証するように指示します。以下の手順は主にDovecot のウィキ

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

サービス認証{
    ...
    unix_listener /var/spool/postfix/private/auth {
        モード = 0660
        ユーザー = ポストフィックス
        グループ = 接尾辞
    }
    ...
}

そして、Postfix はこれを/etc/postfix/main.cf再度使用する必要があります。

# 認証
smtpd_sasl_type = ドブコット
smtpd_sasl_path = プライベート/認証
  # もう 1 つの可能なタイプは "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は、コメントを外すだけで必要な行がすでに含まれていますが、いくつかのそれらのうちのいくつかはまだ除外されるべきです。

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

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

8.最後に、 を編集して、アカウントのエイリアスを設定します/etc/aliasespostmasterエイリアスは基本的に必須です。メール サーバーに問題がある場合の連絡先になります。ポインティングrootやその他の同様のエイリアスも便利です。

基本的なフォーマットはaliases(5)に記載されています。

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

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

現在、ditiPostfix と Dovecot に関する限り、と呼ばれるアカウントは 1 つ残っていますが、そこに送信されたメールkra@...もそこに転送されます。一部のメール クライアント (Thunderbird など) は、単一のメール サーバーに対して複数の「ID」または「ペルソナ」をサポートしているため、異なる「From:」アドレスを選択できます。

以上です。procmail、仮想ドメイン、SPF、DKIM の説明については後ほど紹介するかもしれません。

関連情報