システムユーザーなしで sendmail を使用する必要があります。
私の構成にまだ存在する唯一の問題は、FEATURE(virtusertable)
次のように virtusertable の RHS に最終的なシステム ユーザーが必要なことです。
@domain.tld [email protected]
[email protected] systemuser
問題は、そのようなシステムユーザーが存在せず、@domain.tld 宛てのすべてのメールを、ユーザーとして完全な電子メール アドレスを処理できる lda (procmail、次に dovecot-lda) に配信したいということです。
私はすでに次のようなことを試しました
define(`_VIRTUSER_STOP_ONE_LEVEL_RECURSION_', `true')dnl
define(`_NEED_MACRO_MAP_',`1')dnl
しかし、これも役に立ちません。
virtusertable を読み取る procmail スクリプトによる醜い回避策はすでにありますが、これを sendmail で処理して、LDA に RHS やユーザーが含まれない送信メールが返送されるようにしたいです。さらに、sendmail で直接 lda を使用する dovecot-lda も、私たちのセットアップではオプションではありません。:(
どのような助けでも歓迎します!
答え1
を見てみましょうセンドメール FAQ 3.29- 「仮想ドメイン内の複数のユーザーが 1 つのメールボックスにアクセスする場合、実際の受信者を指定するヘッダーを追加するにはどうすればよいですか?」
私の意見では、これは必要なフックをすべて提供するので、簡単に適応して必要なものを提供できると思います。
ちなみに、選択したメーラーに「@domain.tld」virtusertable エントリを使用できますerror
。これにより、virtusertable にリストされていない仮想ユーザーへのメッセージを拒否できるようになります。
@domain.tld error:nouser No such user here
[email protected] systemuser+%1
[email protected] systemuser+%1
ご相談も承りますhttps://www.sendmail.com/sm/open_source/tips/virtual_hosting/
答え2
私は最終的に次の 2 つの方法でこの問題を解決しました。
a) パッチを適用しlibsm/mbdb.c
、sendmail/recipient.c
dovecot ユーザー テーブルへの追加の参照を行います。これを機能させるには、LOCAL_RULE_0 を使用した小さな調整が必要でした。
b) Andrzej は、stackoverflow の同様の質問で、mailertable と access ファイルを使用した解決策を教えてくれました。このアイデアに従って、必要なものをすべて揃えるさらに簡単な解決策を見つけました。
virtuserテーブル:
@domain.tld user_domain_tld
[email protected] user_another_tld
エイリアス:
user_domain_tld: "|/bin/procmail -a [email protected]"
user_another_tld: "|/bin/procmail -a [email protected]"
解決策 a) は、virtusertable で受け入れられる構文を変更し、時間の経過とともに 1 つのファイルのみをチェックするだけで済むため便利です。解決策 b) は、簡単に実現でき、さらに sendmail の将来のリリースとの互換性も高いため、優れています。すべての作業の後で、私は解決策 a) を使用していますが、クリスマス後には解決策 b) に変更する予定です ;)