未定義アドレスのPostfix、仮想エイリアス、キャッチオール


8

Postfix 2.10.2では、ローカルユーザーにメールアドレスを割り当てるために、複数のドメインといくつかの仮想エイリアスを設定しています。キャッチオールを追加しない限り、問題なく動作します。

仮想エイリアスを使用する前は、

local_recipient_maps =
luser_relay = catchall

しかし、異なるドメインのメールアドレスを分類する必要があるため、仮想エイリアスを使用する必要がありました。

今、postfix.orgは次のようにすべきだと言っています。

/etc/postfix/main.cf:

virtual_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual

/ etc / postfix / virtual:

postmaster@example.com account1
info@example.com       account1
sales@example.com      account2
@example.com         catchall

しかし、そうすると、キャッチオールアドレスは、明示的に定義されていないアドレスへのメールだけでなく、すべてのメールを取得します。なぜそれを変更するのですか?

postmap virtualを実行し、Postfixも再起動しました。ログにはエラーはなく、キャッチオールアドレスへの配信がログに記録されるだけです。そして、「mydestinationとvirtual_alias_domainsの両方にドメインexample.comをリストしないでください」という警告がありますが、それはしませんでした!mydestinationディレクティブもありません。(以下の構成に1つありますが、NickWが提案した後に追加しました。)

ここに私の完全なconfがあります:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all
mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/dovecot.conf -m "${EXTENSION}"
mailbox_size_limit = 0
mydestination = $myhostname
myhostname = mydomain.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/dovecot-auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/dovecot/dovecot.pem
smtpd_tls_key_file = /etc/dovecot/private/dovecot.pem
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
virtual_alias_domains = $myhostname, myotherdomain.com
virtual_alias_maps = hash:/etc/postfix/virtual

回答:


4

すべてのメールアドレスを仮想エイリアスに含めると、機能します。

main.cf

 virtual_alias_maps = hash:/etc/postfix/virtual

virtual

user1@example.com           user1@example.com
user2@example.com           user2@example.com
...
catchall@example.com        catchall@example.com
@example.com                catchall@example.com

このソリューションは実装が最も簡単で、期待どおりに機能します。ありがとうございました!
EdwardTeach

1
注:最終sの中でvirtual_alias_maps
FMCorz 2016年

3

それで、私はそれを理解しました。キャッチオールは仮想エイリアスファイルの上にある必要があると言う人もいますが、私は以前に試しましたが、役に立ちませんでした(その解決策は非常に論理的であることがわかりました)。

うまくいったのは:

  1. セットmydestination=localhost(そうではない$myhostname
  2. キャッチオールを仮想エイリアスファイルの上に追加します。 @domain.com catchall-account@localhost
  3. 以下に他のすべての仮想エイリアスを追加します。 contact@domain.com contact@localhost

この例ではcatchall-account、and という名前のUNIXユーザーがいることを前提としていますcontact。contact@domain.comへのメールは連絡先ユーザーに配信され、他のすべてのメールはキャッチオールアカウントに配信されます。

これは必ずしもすべての場合に必要なわけではないかもしれませんが、私の特別なケースでは、アカウントを使用して一部のアドレスのメールを保存したいのですが、そのアカウントに直接送信されたメールは最終的にキャッチオールになります。

結局のところ、Postfixが機能していないように見えますが、仮想エイリアスを上から下に通しており、さらにキャッチオールには特別な優先順位があります。誰かが実際にこの振る舞いを説明できる場合に備えて、私はさらなるコメントについて喜んでいます。


postfix.org/postconf.5.html#virtual_mailbox_mapsありません指定されたドメイン内のすべてのユーザーに一致するように『domain.tldに@「のルックアップテーブルでは、の左側を指定』:、以下の文章があります特定の「user@domain.tld」エントリ。」-私はそれがvirtual_alias_mapsでも同様であると思うので、順序はまったく違いがありません
Daniel Alder

0

を設定してみてmydestination = $myhostname、ホスト名がmain.cfに設定されていることを確認してください(例:)myhostname = mail.example.com


それは何も変わりませんでした。警告はまだそこにあり、メッセージはまだキャッチオールに行きます。
Konzertheld

残りのmain.cfを質問に入れてもらえませんか?
NickW 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.