root 使用者的 virtusertable 偵錯指令

root 使用者的 virtusertable 偵錯指令

我在 Solaris 5.11 上運行 sendmail。本地用戶名的格式為<字母><數字>(例如hn06511)。過去,我們使用別名來指向 <使用者名稱>@olddomain.com。

<使用者名稱> <使用者名稱>@olddomain.com

現在有一個新的電子郵件地址方案和一個新的網域。現在,電子郵件地址的格式為 <firstname>.<lastname>@newdomain.com。

所以我將別名改為:

<使用者名稱> <名字>.<姓氏>@newdomain.com

這有效,但是 <用戶名>@olddomain.com 不再有效。雪上加霜的是,許多腳本都採用舊風格硬編碼電子郵件地址。

所以我想更改 <username>@olddomain.com -> <firstname><lastname>@newdomain.com。我認為我可以使用 virtusertables 來完成此任務,因此我製作了一個 virtusertable,其中包含:

@olddomain.com %1

據說應該採用 <anybody>@olddomain.com 並將其路由到使用者名稱 (%1)。我希望我定義的別名能夠翻譯 <username> -> <firstname>.<lastname>@newdomain.com。但據我所知,sendmail 完全忽略了這個 virtusertable,並嘗試傳遞到 <username>@olddomain.com,當然失敗了。

AFAICT 我正確格式化了 virtusertable 並運行了 makemap(我應該使用 dbm 還是 hash?我都見過)。 AFAICT 我已經放入了正確的 FEATURE 並完成了 make 並確保生成的 sendmail.cf 位於正確的位置。我見過 FEATURE 表示兩者

功能(virtusertable',dbm -o /etc/mail/virtusertable')

功能(virtusertable',哈希-o /etc/mail/virtusertable')

但兩者都不起作用。

我可以提供並嘗試什麼樣的調試或其他資訊?

提前致謝。

答案1

root 使用者的 virtusertable 偵錯指令

@oldomain.com在 virtusertable 中尋找條目

echo '/map virtusertable [email protected]' | sendmail -bt

檢查 sendmail 是否檢查 virtusertable 的 olddomain.com 電子郵件地址

echo '3,0 [email protected]' | sendmail -d60.5 -bt

-d60.5追蹤映射的查找(也是虛擬用戶查找)。


更多提示:

  1. m4期待另一次引用

    FEATURE(virtusertable,`hash /etc/mail/virtusertable')
    
  2. 請勿將 virtusertable 設定為可選。-o從線上移除FEATURE
    使用-osendmail 會忽略缺少的virtusertable。

  3. Sendmail 使用 virtusertable 的編譯版本。用於makemap編譯virtusertable。

  4. $=wvirtusertable 僅針對本機電子郵件網域 ( ) 和$={VirtHost}網域進行諮詢。

    以 root 身分使用以下命令來取得兩個網域列表

    echo '$=w' | sendmail -bt
    echo '$={VirtHost}' | sendmail -bt
    

相關內容