下面我们来看一看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数据库,使用多个数据表格。
【编辑推荐】