Postfixがlmtpを介してユーザー名をDovecotに渡さないのはなぜですか? FreeBSDでこれを達成するには?

Postfixがlmtpを介してユーザー名をDovecotに渡さないのはなぜですか? FreeBSDでこれを達成するには?

PostfixがどのようにデータをDovecotに渡すかを理解するのは困難です。

メールを受信するドメインが複数あります。私は、仮想ユーザーがプレーンテキストファイルに保存されているパスワードを含む自分に関するすべての情報を取得したいと思います。

したがって、Postfixの例によると

virtual_mailbox_domains = mydomain1.com, mydomain2.com, ... (or a hash)
virtual_mailbox_maps = hash:/path/to/vmailboxes
virtual_transport = lmtp:unix:private/dovecot-lmtp

仮想メールボックスでは、

[email protected] someuser

鳩で私はやる

passdb {
  driver = passwd-file
  args = scheme=plain-md5 username_format=%n /usr/local/etc/dovecot/users
}
userdb {
  driver = passwd-file
  args = username_format=%n /usr/local/etc/dovecot/users
  default_fields = uid=dovecot gid=dovecot home=/home/dovecot/%u
}

それで、Postfixがメールを受け取らなければならないと思います。[Eメール保護]、宛先が次のユーザーであることがわかります。ユーザーDovecotに正確に渡してください。しかし、Postfixは常に中継します。[Eメール保護]同じユーザーを指す別のメールアドレスがある可能性があるため、確かに私が望むものではありません。

[email protected] someuser
[email protected] someuser

Dovecotがパスワード/ユーザーデータベースを参照してそのディレクトリにメッセージを入力するようにしたいと思います。ユーザー。また、IMAP認証のために同じデータベースを照会したいと思います。

最後に、SMTP認証が必要です。ユーザーPostfixに接続してリレーとして使用できます。私が持っている設定を使ってこれをどのようにしますか?これを行うには、Postfixに別々のパスワードテーブルを設定する必要がありますか、それともPostfixはどういうわけかDovecotに連絡して、そのユーザーがメールを送信できるようにしますか?

答え1

したがって、本質的に2つのエラーがあります。

まず、virtual_mailbox_mapsは私のシナリオに適したオプションではありません。代わりにvirtual_alias_mapsを使用する必要があります。

第二に、仮想メールボックスの左右に電子メールアドレスを提供する必要があります。それ以外の場合、Postfixは$ myhostnameに転送しようとしますが、これはLMTPを介して単純なユーザー名を提供できません。もしそうなら、

[email protected] [email protected]
[email protected] [email protected]
[email protected] anotheruser

最初の2行はうまく機能し、両方の行にメールを転送します。[Eメール保護]そして[Eメール保護]「というユーザーに[Eメール保護]Dovecotが使用しています。唯一の違いは、認証中に次のようにログインする必要があることです。[Eメール保護]”だけでなく、”@… 「なしのユーザー名でもありません。

しかし、3行目はメッセージを転送します。[Eメール保護]到着[Eメール保護]、メールボックスの書き込みはPostfixによって処理され、この場合LMTPは呼び出されません。

最後に、virtual_ではなくRelay_を使用する方が良いです。これは、Postfix という用語で Dovecot の LMTP サービスにメールを中継することは、同じシステムで実行していても他の場所で中継するのと同じであるため、Relay_option を使用することが「よりスマート」であるためです。

main.cfのジョブ構成は次のとおりです。

relay_transport = lmtp:unix:private/dovecot-lmtp
relay_domains = mydomain1.com, mydomain2.com
virtual_alias_maps = hash:/usr/local/etc/postfix/virtualmailboxes

smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/auth
smtpd_sasl_auth_enable = yes

smtpd_tls_cert_file = /etc/ssl/servercertificate.pem
smtpd_tls_key_file = /etc/ssl/serverkey.pem
smtpd_tls_security_level = may
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3

他のすべてのオプションはあなたのニーズに依存しますが、Postfixに付属のmain.cfの例では動作するように他のものに触れませんでした。

仮想メールボックス:

[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]

Dovecotで設定された認証部分:

auth_debug = yes
auth_verbose = yes
auth_mechanisms = plain
passdb {
  driver = passwd-file
  args = scheme=plain-md5 username_format=%u /usr/local/etc/dovecot/users
}
userdb {
  driver = passwd-file
  args = username_format=%u /usr/local/etc/dovecot/users
  default_fields = uid=dovemail gid=dovemail home=/var/mail/%u
}

/usr/local/etc/dovecot/ユーザー:

[email protected]:{PLAIN}yourpassword::::::
[email protected]:{PLAIN}yourpassword::::::

/usr/local/etc/dovecot/conf.d/10-master.conf は、既に存在する部分が次のように見えるように中間行のコメントを外す必要があります。

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    group = postfix
    user = postfix
  }

そして、同じファイルの別のセクションは次のとおりです。

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

dovemailユーザーを作成し、メールディレクトリ(/var/mailなど)に対する読み取り/書き込み権限を付与する必要があります。

関連情報