postfix admin 自动回复部分的安装调试过程
自动回复整个流程:
-----------------
other MTA <====>; postfix MTA ====>; maildrop (判断当前邮件接收者的状态是否设定自动回复,后面是用户设定了自动回复状态) ====>; 邮件被发送到邮件接收者 ====>; 邮件同时被转发到自动回复代理帐户 ====>; MTA系统调用vacation.pl ====>; vacation.pl 分析邮件中的头信息得出邮件回复地址 ====>; vacation.pl 利用 “sendmail” 程序发送邮件到 otherMTA
一个实例:
---------
说明:本实例设置域 autoreply.com 为自动回复代理域,suyang@intojoy.com为测试帐户 ,suyang@intojoy.com@autoreply.com 为自动回复代理用户。
用户在建立自动回复时Postfix Admin 有2个动作,首先会在数据库中建立一封邮件,并在alise表的goto字段中添加一个别名即suyang@intojoy.com@autoreply.com 。邮件到达时,系统会将邮件发到两个地址suyang@intojoy.com和suyang@intojoy.com@autoreply.com,在transport中设置从autoreply.com -->; vacation 的转发,所以系统会将发送到autoreply.com域的邮件,利用master.cf中配置vacation.pl脚本做出自动回复动作。
自动回复部分安装:
以下操作是在安装完postfix admin之后进行
-----
系统要求
---------
你需要在你的系统中安装如下组件
- Perl5
- Perl DBI
- Perl DBD::mysql
关于自动回复
------------
这个自动回复是使用一个系统帐户利用一个Perl 脚本来对发送者进行自动回复
安装自动回复
------------
1. 创建一个本地帐户
-------------------
创建一个"vacation"的本地帐户,并且"vacation"不容许登陆。不要使用"nobody",也不能使用"root"和"postfix"等。
#/etc/passwd
vacation:*:65501:65501::0:0:Virtual Vacation:/nonexistent:/sbin/nologin
#/etc/group
vacation:*:65501:
2. 为自动回复创建数据表
-----------------------
USE postfix;
#
# Table structure for table vacation
#
CREATE TABLE vacation (
email varchar(255) NOT NULL default '',
subject varchar(255) NOT NULL default '',
body text NOT NULL,
cache text NOT NULL,
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(4) NOT NULL default '1',
PRIMARY KEY (email),
KEY email (email)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Vacation';
3. 创建一个目录
---------------
创建一个目录,例如/var/spool/vacation,它只容许"vacation"用户访问
vacation.pl脚本及其日志文件等将放在这里。
4. 复制文件
-----------
将$postfixadmin-2.1.0/VIRTUAL_VACATION/vacation.pl文件拷贝到刚才创建的文
件夹中
$ cp vacation.pl ;/vacation.pl
$ chown -R vacation:vacation ;
然后你将会看到:
ls -al ;/
-rwx------ 1 vacation vacation 3356 Dec 21 00:00 vacation.pl*
5. 修改文件
-----------
为了让 vacation.pl 能够执行所有邮件都回复这一特性,下面修改其内容:
将if (do_cache ($email, $orig_from)) { return; } 这句注销掉即可。
6. 开始对系统进行设置
---------------------
在master.cf中定义transport 的类型:
#/etc/postfix/master.cf:
vacation unix - n n - - pipe
flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}#
在mail.cf 中设定一个 transport maps file
下面举A/B两种方法
A.哈希数据库
--
#/etc/postfix/main.cf:
transport_maps = hash:/etc/postfix/transport
然后添加在/etc/postfix/transport 文件中添加一条新的解析记录
#/etc/postfix/transport
autoreply.yourdomain.com vacation
注意:"autoreply.yourdomain.com"此处与$postfixadmin-2.1.0/config.inc.php文件中的$CONF['vacation_domain']的参数相同
"vacation"要与master.cf 中的 "vacation" 相同
执行 "postmap /etc/postfix/transport" 去创建一个哈希数据库
执行 "postfix reload" 完成配置
B.mysql数据库
--
#/etc/postfix/main.cf:
transport_maps = mysql:/etc/postfix/mysql/mysql_virtual_transport_maps.cf
其中mysql_virtual_transport_maps.cf的内容如下
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
table = domain
select_field = transport
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'
然后添加使用postfix admin 创建新域"autoreply.com",在Transport段中添加"vacation"
执行 "postmap /etc/postfix/transport" 去创建一个哈希数据库
执行 "postfix reload" 完成配置
注意:英文安装文档在$postfixadmin-2.1.0/VIRTUAL_VACATION/install.txt 中找到
阅读(1914) | 评论(0) | 转发(0) |