Postfix中的命令行工具
下面我們來看一看postfix的命令行工具,通過這些工具的使用可能會使你對postfix的管理更簡單。
一、sendmail兼容的命令行工具
1. mailq 對郵件隊列文件進行列表。表中的每一個條目包含有以下信息:
隊列文件ID、郵件的大小、到達的時間、發件人、收件人和投遞延遲的原因(如果投遞有延遲的話)。該命令主要是與showq后臺程序通信來獲取隊列文件的相關信息。該命令無參數。
2. newaliases 該工具進行別名數據庫的初始化。如果沒有指定數據庫的類型,則使用系統默認的數據庫類型(在linux下為hash)。該命令可以不帶參數執行。
二、 postfix自帶的命令行工具
1. postcat 打印郵件隊列文件的內容。后面界要顯示的隊列文件名,可以帶一個-v的參數進行冗余顯示。
2. postconf 打印配置參數設置后的值或postfix的其他信息。
-d 打印配置參數的缺省值。
-m 列出所有支持的查詢表類型。
不帶參數則打印配置參數設置后的值。
3. postmap 建立postfix查詢數據庫。在linux下可以直接跟上原始文件而不帶任何參數來建立該數據庫。
三、 postfix的日志
postfix的日志文件位于/etc/log/maillog, 文件中包含有postfix的啟動信息、出錯信息以及同其他SMTP服務器的會話等等。如下所示:
Sep 10 05:54:17 mail postfix/smtpd[5072]: disconnect from unknown[204.140.244.150]
Sep 10 06:06:00 mail postfix/qmgr[467]: 50D403DF8: from=, size=6591 (queue active)
Sep 10 06:11:06 mail postfix/smtp[5085]: connect to bjmx2.163.net[202.108.255.241]: read timeout (port 25)
Sep 10 06:16:07 mail postfix/smtp[5085]: connect to bjmx3.163.net[202.108.255.242]: read timeout (port 25)
Sep 10 06:21:08 mail postfix/smtp[5085]: connect to bjmx1.163.net[202.108.255.240]: read timeout (port 25)
四、在postfix中使用MySQL數據庫
Scott Cotton 和 Joshua Marcus寫了一段可以在postfix中添加mysql映射類型的代碼,從而我們可以將postfix查詢的別名數據庫等數據存儲在mysql數據庫中,讓postfix進行mysql查詢來得到結果。這樣做將有助于提供postfix的運行效率, 有其對需要不斷對映射數據的站點特別有用。
1.為postfix添加識別mysql數據庫映射的功能
a. 由于這段代碼使用了mysql客戶端庫,所以我們必須安裝mysql的開包。
可以到www.redhat.com等linux相關站點下載mysql開發包,也可以從某些linux的資源光盤中取得mysql的開發包,如MySQL-client-3.22.30-1.i386.rpm。
b. 安裝該開發包:
rpm -ivh MySQL-client-3.22.30-1.i386.rpm
c. 下載postfix的源代碼包,根據本章“3.1源代碼包的安裝”的提示進行安裝,但是注意在執行make命令之前先執行以下命令:
make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I /usr/include/mysql'
'AUXLIBS=/usr/lib/mysql/libmysqlclient.a -lm'
5. 配置postfix使用mysql數據庫映射
我們以alias_maps進行說明。在main.cf中指定:
alias_maps = mysql:/etc/postfix/mysql-aliases.cf
6. 編輯mysql-aliases.cf
#首先指定登錄到mysql服務器的用戶名和密碼
user = your_user_name
password = your_password
#連接的數據庫名稱
dbname = your_database_name
#查詢的表名
table = mytable
#添加表的字段名稱
#forward_addr為轉發地址
#alias為別名數據
select_field=forward_addr
where_field=alias
#添加附加的查詢條件
additional_conditions=and status='paid'
#指定要連接的MySQL服務器
hosts=your.mysql.server
這樣,當發生一個查詢的時候,postfix是以這樣的SQL語句進行查詢的:
select forward_addr from mytable where alias='$lookup' and status='paid'
以上只是我例舉的一個例子。在實際的運用中您可以指定多個mysql數據庫,使用多個數據表格。
【編輯推薦】