Sendmail

如何讓 sendmail 尊重虛擬使用者的 +-notation?

  • July 28, 2017

我對不同的域有不同的轉發需求,它們都指向我的郵件伺服器:

user1@example.com   foo@example.org
user2@example.com   bar@example.net
@example.com        mylocalaccount

這一切都有效……但是,其中一些使用者希望使用 +-notation 為不同的供應商提供不同的地址,例如user1+ *vendor*`@example.com。而這部分不起作用——所有這些電子郵件最終都被傳遞到了包羅萬象mylocalaccount`的地方,而不是被正確轉發。

如何使我user+foo@example.com被轉發到與 相同的目的地user@example.com

我嘗試添加類似的條目

user1+*@example.com    foo+%2@example.org

但這並沒有解決問題…

這是調試跟踪:

沒有細節:

% sendmail -d60.5 -bv g@example.com
map_lookup(dequote, me, %0=me) => NOT FOUND (0)
map_lookup(dequote, g, %0=g) => NOT FOUND (0)
map_lookup(virtuser, g@example.com, %0=g@example.com, %1=g) => gexample@example.net (0)

…有效。

詳細說明:

% sendmail -d60.5 -bv g+meow@example.com
map_lookup(dequote, me, %0=me) => NOT FOUND (0)
map_lookup(dequote, g+meow, %0=g+meow) => NOT FOUND (0)
map_lookup(virtuser, g+meow@example.com, %0=g+meow@example.com, %1=g+meow) => NOT FOUND (0)
map_lookup(virtuser, @example.com, %0=@example.com, %1=g+meow) => me (0)
map_lookup(dequote, me, %0=me) => NOT FOUND (0)
map_lookup(user, me, %0=me) => me<> (0)
g+meow@example.com... deliverable: mailer local, user me

… 不工作 - 來到包羅萬象的本地帳戶“我”。

您的. +_ 它使行中看到一個令牌而不是三個令牌。OperatorChars``sendmail.cf``R``sedmail.cf``user+detail``user + detail

sendmail.cf生成自sendmail.mc 應將OperatorChars 設置為.:%@!^/[]+預設情況下符合 bat book。它可以通過定義在 mc 文件中進行更改confOPERATORS

檢查報告的內容grep OperatorChars /etc/mail/sendmail.cf

如果您想 virtusertable 重定向並保留 +detail ,請嘗試:

# use %2 if you want to strip EMPTY +detail (user+@example.net)
user1@example.com   foo%3@example.org

調試程序

以 root 身份執行sendmail -d60.5 -bv user1+x@example.net

它應該跟踪映射查找,包括 virtusertable 映射查找。

嘗試sendmail -d21.12 -d60.5 -bv user1+x@example.net在 virtusertable 查找之前是否刪除了 +detail。

user1+detail@example.com預設情況下**,應該**讓 sendmail 查找以下 virtusertable enries:

  1. user+detail@example.com
  2. user++@example.com
  3. user+*@example.com
  4. user@example.com
  5. ++@example.com
  6. +*@example.com
  7. @example.com

user+@example.com(加上存在但詳細資訊為空)進行查找 1+3+4+6+7

user@example.com(不存在+詳細資訊)進行查找 4+7

引用自:https://serverfault.com/questions/865383