安全なIMAPメールサーバーをセットアップする最も簡単な方法は?[閉まっている]


17

メールプロバイダーとしてのGoogleを廃止し、専用サーバーで完全なメールソリューションをセットアップしたいと思います。問題:問題が発生した場合にすべてを再度セットアップするのが苦痛にならないように、セットアップを可能な限りシンプルにすることを望みます。

前提条件

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

シンプルさ、IMAP / SMTPアクセス、および安全な認証は、誰もがGoogleを離れることを切望する「基本的な」機能であると信じています。誤解していて、よりシンプルなソリューション(たとえば、すべてが含まれているownCloudのようなソリューション)があれば、喜んでお聞きします。

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

これまでに見つけた情報

  • フランス語の記事はで説明し、非常に長い完全な、安全な電子メールソリューションを設定する方法について説明します。長く、保守が難しく、バックアップと復元が難しいなどです。さらに、DNSキャッシュが必要ですか?
  • Gentoo wiki(Complete_Virtual_Mail_Server/SSL_Certificatesページ)はCAcert証明書の使用について言及していますが、それについては明確ではなく(これらのSubjectAltNameサブドメインはすべて必要ですか?)、Postfixを使用していません(Courierはより難しいと読みました)。
  • セルフホスティングに関するさまざまなチュートリアル、すべてが異なり、その動作とその理由を説明することはめったにありません(リモートアクセスを備えたセルフホストの電子メールのセットアップは複雑に思えます。 。

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


1
この質問をどのように言い換え、再開できるか考えていますか?
ディティ

回答:


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

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

  • あなたが同じアカウントにすべてのメールに行くを作ると罰金している場合は、プレーンなエイリアス(、のように設定することができ/etc/aliases宛のメールをリダイレクトするように)、kra@またはpostmaster@ditiアカウント。

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


以下では、このサーバーを指すようにドメインにMXレコードが既に構成されていることを前提としています。数か月後、私はいつも「これは一体何なのか」といつも疑問に思うので、私は通常、構成を合理的に明確にしようとします。

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

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

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

ssl-certPostfixとDovecotがアクセスできるように、両方のファイルがグループによって所有され、読み取り可能であることを確認してください。また、を使用して両方のデーモンのアカウントをそのグループに追加します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を使用できます。
  #「postfix」を「ssl-cert」グループに追加して、
  #/ etc / ssl / private内のファイルにアクセスします。

# ポリシー
mynetworks = [::1]/128、127.0.0.0/8、[::ffff:127.0.0.0]/104
  #これは、「信頼できる」と見なされ、使用可能なIPアドレスを一覧表示します
  #このサーバーは、外部(つまり、他のドメイン)にメールを送信します。沿って
  #デフォルトでは、「localhost」のみが許可されます。他の全員からメールのみ
  $ mydestinationの#ドメインが受け入れられます。
mydestination = $ mydomain、localhost
  #任意のIPアドレスからのメールを受け入れるドメインのリスト。
#配送
alias_maps = hash:/ etc / aliases
  #これにより、システム全体のエイリアスが保持されます。明示的に設定するのは良いことです
  #デフォルト値にはNISが含まれることがありますが、これは意味がありません。
recipient_delimiter = +
  #postfixにアドレスのローカル部分を最初の「+」で分割するように指示し、
  #いわゆる「プラスアドレス」:diti + foo @に送信されたメールは配信されます
  #diti @メールボックスに。

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

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

4.デフォルトでは、Postfixはにメールを配信/var/mail/$USERのmboxあなたが移動するたびにファイル全体を書き換える必要があるため、特に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を介してメールクライアントで接続することにより、外。

最初にDofixを使用してログインを確認するようPostfixに指示します。次の手順は、主にDovecotのwikiから取られています

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

サービス認証{
    ...
    unix_listener / var / spool / postfix / private / auth {
        モード= 0660
        ユーザー=後置
        グループ=後置
    }
    ...
}

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

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

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

/etc/postfix/master.cfSASL認証で、「送信」ポートを有効にします。デフォルトにmaster.cfは、コメントを外すだけでよい必要な行が既にありますが、それらの一部はまだ除外する必要があります。

提出inet n----smtpd
  -o syslog_name = postfix / submission
  -o smtpd_tls_security_level = encrypt
    #「Submission」ポートは、オプションにする代わりに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 smtpd_sender_restrictions = $ mua_sender_restrictions
    #これら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)を必要とするメールクライアントがある場合は、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」または「ペルソナ」をサポートしているため、異なる「差出人」アドレスから選択できます。

それについてです。後でprocmail、仮想ドメイン、SPF、および/またはDKIMの指示を返すことがあります。


1
これはすごい!これは、実際に電子メールのセルフホスティングに関する最も簡単なチュートリアルです。最も驚いたのは、ポイント1で、サーバーとの間で既に電子メールを送受信できることでした。とにかく、私もあなたのメッセージを編集していくつかのポイントを明確にします!ただし、外部から電子メールをセットアップすることはできません(つまり、Thunderbirdを意味します)。私は使用していますmail.diti.me私のドメインがすでにMXレコードを持っている、(=私のサーバーのIPアドレス)IMAPとSMTPの両方のために。サーバーのセットアップ中に何か間違ったことをしたか、Thunderbirdの問題がありますか?
ディティ

@Diti:すべての関連ポート(tcp / 25を除く)がサーバーでファイアウォールされているようです。
grawity

の出力はどうあるべきps auxw | grep "dovecot"ですか?私は友人の複雑な設定の1つと比較しましたが、彼は持っていdovecot-authimap-login、私は持っていません。ポートが実際に開いている可能性はありますか(ファイアウォールを使用して自分のことを思い出しません)、外部からそれらのポートをリッスンするデーモンが設定されていない、などがありますか?openssl s_client -connect mail.diti.me:993サーバーで実行すると動作しますが(「Dovecot ready」と表示されます)、外部からは何も表示されません。たぶん、ファイアウォールをインストールして、それらのポートを明示的に許可する必要がありますか?
ディティ

@Ditiは: - v2ので、そこにいるあなたが別のプロセスが表示されますので、Dovecotのアーキテクチャは、v1とv2の間で大きく変化しdovecotdovecot/anvildovecot/log、など。また、一部のプロセスは、誰かが接続したとき、または認証の詳細を確認したときにのみ開始されます。
-grawity

1
@Diti:いいえ、両方のデーモンはデフォルトですべてのインターフェースとすべてのアドレスをリッスンします。ただし、接続は拒否されません。むしろ、サーバーはすべての接続試行を静かにドロップします(リンク先のnmapスキャンを参照)。これは、どこかのファイアウォールの確実な兆候です。を使用iptables -n -v -Lして、パケットをドロップするルールがあるかどうかを確認してください。
-grawity
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.