雖然使用 virtual_mailbox_maps = /etc/postfix/virtual 對應到一個文字檔案管理帳號資訊,確實可以減少新增維護實體本機帳號的工作以及避免不必要的資安問題,不過人都是不滿足的,每次都要先 vi 一下再 postmap 實在是太麻煩了,有更方便的方式嗎?
不妨試試使用 MySQL 資料庫來管理帳號 ...
--
參考
- Complete Virtual Mail Server/Postfix to Database
- How to specify target directory in Postfix with MySQL?
轉換為 MySQL 資料庫當作使用者帳號是以 Postfix 使用虛擬使用者 - 1. /etc/postfix/virtual 基礎來修改,所以請從頭實做
--
MySQL 資料庫的準備
建立資料庫使用者帳號
使用者帳號資料表
1 2 3 4 5 6 7 |
CREATE TABLE `UserAlias` ( `id` int(11) NOT NULL auto_increment, `Create_Time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間', `Email` varchar(200) NOT NULL, `Password` char(40) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
新增使用者
1 |
INSERT INTO `UserAlias` (`Email`) VALUES('aaa@mail.hoyo.idv.tw'); |
--
Postfix 設定
/etc/postfix/main.cf
1 2 |
# 註解 virtual_mailbox_maps = hash:/etc/postfix/virtual virtual_mailbox_maps = mysql:/etc/postfix/mysql-aliases.cf |
重新啟動 postfix
1 |
# systemctl restart postfix |
/etc/postfix/mysql-virtual-maps.cf
1 2 3 4 5 |
hosts = 127.0.0.1 user = Postfix password = Postfix dbname = Postfix query = SELECT '%d/%u/' FROM `UserAlias` WHERE Email='%s' |
- '%d/%u/' 回傳 網域名稱/帳號名稱/ 格式,例如:mail.hoyo.idv.tw/aaa/
測試是否可取得值以及取到什麼值,如果沒回傳就代表有錯誤
1 2 |
# postmap -q aaa@mail.hoyo.idv.tw mysql:/etc/postfix/mysql-virtual-maps.cf mail.hoyo.idv.tw/aaa/ |
--
1,657 total views, 1 views today