利用MySQL 當成你的postfix 的lookup table。
昨天已經跟大家介紹如何何利用LDAP改寫郵件地址。如果您有讀過前幾天的文章,您也許會想說是否一樣可以利用ySQL作為Canonical address mapping 的lookup table,這樣就算您有一千個以上的帳號,也不會造成檔案很難維護,又如果說你要有多台postfix 那檔案不會不一致。
為了要讓您的Postfix 使用MySQL 來當作查看的對照表(MAPS),您需要先在main.cf先定義MySQL 的source,您需要編輯main.cf並定義canonical_maps如下範例:
canonical_maps = mysql:/etc/postfix/mysql-canonical.cf
另外您的/etc/postfix/mysql-canonical.cf 範例如下:
# 設定要連入的主機
hosts = mysql.ithome.com.tw
# 設定要登入資料庫的帳號跟密碼
user = ithome_user
password = ithome_password
# 設定使用的資料庫名稱
dbname = mail_db
# 設定查詢條件
query = SELECT mail FROM user WHERE mailacceptinggeneralid='%s' AND status='active' limit 1
這裡跟LDAP比較不一樣的作法是,我們可以限制指回傳一筆資料,拿回傳的第一筆去改寫郵件地址改。