私は を備えたメールサーバーを所有しておりpostfix
、Debian buster 上で動作していますdovecot
。mysql
これまでのところすべて正常に動作していますが、SASL 認証のログイン名が受信者ドメインのユーザー部分と異なるシナリオを設定したいと思います。
例:
Login name used for SASL auth: myusername
Sender email address: [email protected]
dovecot でログイン名を変数として使用できるため、dovecot による認証は正常に機能します。
しかし、Postfixが実際にメールを送信する前に、送信者のアドレスが本当にログインしたユーザーのものであるかどうかを確認したいと思います。そこで、smtpd_sender_login_mapsmaster.cf 内の送信サービスへのオプション。mysql テーブルを指します。
-o smtpd_sender_login_maps=proxy:mysql:/etc/postfix/mysql/sender-login-maps.cf
postfixのmysql-tableマニュアルによると(http://www.postfix.org/mysql_table.5.html) の場合、使用可能な変数は %s、%u、%d のみで、これらはすべて送信者アドレスに関連しています。つまり、
%s = [email protected]
%u = sender
%d = domain.com
元のSASLログイン名('私のユーザー名') を SQL クエリに含めることはできますか?
答え1
実際、この目的のために sasl auth ユーザー名にアクセスする必要はないことがわかりました。
ユーザー マニュアルによると、 smtpd_sender_login_maps
sasl ユーザーが所有する電子メール アドレスを返すのではなく、送信者の電子メール アドレスを所有する sasl ユーザーを返す必要があります。
http://www.postfix.org/postconf.5.html#smtpd_sender_login_maps
いずれの場合も、テーブル検索の結果は「見つかりません」か、コンマや空白で区切られた SASL ログイン名のリストのいずれかである必要があります。
このようなクエリでは、sasl ユーザー名は変数として必要ありません。