- 论坛徽章:
- 0
|
基于FreeBSD的postfix邮件系统+spamassassin+Clamav Antivirus
三、启动服务
1)、MySQL
-----------------------------------------------
# /usr/local/mysql/share/mysql/mysql.server start
-----------------------------------------------
为了确保postfix以及以后的进程能够正确的搜索到libmysqlclient,在这里将mysql的lib设置到ldconfig的搜索路径中:
-----------------------------------------------
# ldconfig -m /usr/local/mysql/lib/mysql
-----------------------------------------------
2)、Postfix
-----------------------------------------------
# /usr/sbin/postfix start
-----------------------------------------------
3)、Courier-imap
-----------------------------------------------
# /usr/local/courier-imap/libexec/authlib/authdaemond start
# /usr/local/courier-imap/libexec/pop3d.rc start
# /usr/local/courier-imap/libexec/imapd.rc start
-----------------------------------------------
如果你想系统在启动的时候自动运行以上这些服务,可以直接将上面的这些启动服务的命令加入到/etc/rc.local中(这里是以BSD UNIX为例子,如果是非BSD UNIX系统请自行将/etc/rc.local更改为相应系统自启动文件名)。
四、测试邮件系统
在进行下一步前,我们可以先对后台系统进行一下测试,以确保后台系统已经正常工作。
首先建立一个测试用户:
-----------------------------------------------
# /usr/local/mysql/bin/mysql –u postfix -p
mysql>; use postfix;
mysql>; insert into domain(domain,active) values('mainone.net','1');
mysql>; insert into mailbox(username,password,name,maildir,domain,active) values('test@mainone.net','test','kevin','mainone.net/test/Maildir/','mainone.net','1');
mysql>; quit;
测试postfix:
# echo "hello world" | mail test@mainone.net
# ls -al /var/mailbox
-----------------------------------------------
看是否已经建立目录 mainone.net 以及其下面是否有相应的文件夹
测试SMTP认证:
-----------------------------------------------
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.mainone.net ESMTP Postfix
EHLO mainone.net
250-mainone.net
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
AUTH LOGIN
334 VXNlcm5hbWU6
dGVzdEBjbmZ1Zy5vcmc=
334 UGFzc3dvcmQ6
dGVzdA==
235 Authentication successful
-----------------------------------------------
测试中使用的用户名是test@mainone.net密码是test,我们的测试成功了。
测试pop3
-----------------------------------------------
# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
USER test@mainone.net
+OK Password required.
PASS mainone
+OK logged in.
-----------------------------------------------
上面的提示表示我们的pop3登录也成功了 。
五、安装配置Postfixadmin-2.0.5和iGENUS_2.0.2
1)、安装postfixadmin-2.0.5
-----------------------------------------------
# tar -zxvf postfixadmin-2.0.5.tgz
# mv postfixadmin-2.0.5 /usr/local/www/postfixadmin
# cd /usr/local/www/postfixadmin
-----------------------------------------------
为了让postfixadmin正常工作,需要进行一些小的设置,将postfixadmin目录中的config.inc.php.sample复制为config.inc.php,然后编辑其中的参数:
-----------------------------------------------
# cp config.inc.php.sample config.inc.php
# vi config.inc.php
-----------------------------------------------
本例中的配置如下:
-----------------------------------------------
// Language config
// Language files are located in './languages'.
#CONF['default_language'] = 'cn';
// Database Config
// 'database_type' is for future reference.
#CONF['database_type'] = 'mysql';
#CONF['database_host'] = 'localhost';
#CONF['database_user'] = 'postfixadmin';
#CONF['database_password'] = 'postfixadmin';
#CONF['database_name'] = 'postfix';
#CONF['encrypt'] = 'cleartext';
// Mailboxes
// If you want to store the mailboxes per domain set this to 'YES'.
// Example: /usr/local/virtual/domain.tld/username@domain.tld
#CONF['domain_path'] = 'YES';
// If you don't want to have the domain in your mailbox set this to 'NO'.
// Example: /usr/local/virtual/domain.tld/username
#CONF['domain_in_mailbox'] = 'NO';
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
#CONF['quota'] = 'YES';
#CONF['quota_multiplier'] = '1048576';
-----------------------------------------------
为了兼容性,所以我们在这里使用明文口令方式(#CONF['encrypt']='cleartext' ,邮箱的存储格式使用domain.ltd/username的形式,所以设置:
-----------------------------------------------
#CONF['domain_path'] = 'YES';
#CONF['domain_in_mailbox'] = 'NO';
-----------------------------------------------
按照上面的设置,在postfixadmin建立新的虚拟用户的时候,其maildir的格式为domain.ltd/username,但iGENUS是在domain.ltd/username/Maildir中进行操作,所以我们需要对postfixadmin做一点小的修改以使其与iGENUS兼容。
首先修改postfixadmin目录中的create-mailbox.php,找到该文件中的:
-----------------------------------------------
if (#CONF['domain_path'] == "YES"
{
if (#CONF['domain_in_mailbox'] == "YES"
{
#maildir = #fDomain . "/" . #fUsername . "/";
}
else
{
#maildir = #fDomain . "/" . #_POST['fUsername'] . "/";
}
}
else
{
#maildir = #fUsername . "/";
}
在其后面增加:
// Compat for iGENUS
#maildir = "Maildir/";
同时修改postfixadmin/admin目录中的create-mailbox.php,找到该文件中的:
if (#CONF['domain_path'] == "YES"
{
if (#CONF['domain_in_mailbox'] == "YES"
{
#maildir = #fDomain . "/" . #fUsername . "/";
}
else
{
#maildir = #fDomain . "/" . #_POST['fUsername'] . "/";
}
}
else
{
#maildir = #fUsername . "/";
}
在其后面增加:
// Compat for iGENUS
#maildir = "Maildir/";
-----------------------------------------------
# vi languages/cn.lang
找到该文件最前面的如下行:
#PALANG['YES'] = '是';
在该行前面加入:
#PALANG['charset'] = 'gb2312';
-----------------------------------------------
修改postfixadmin目录及文件权限
-----------------------------------------------
# cd /usr/local/www/postfixadmin
# chmod 640 *.php *.css
# cd /usr/local/www/postfixadmin/admin/
# chmod 640 *.php .ht*
# cd /usr/local/www/postfixadmin/images/
# chmod 640 *.gif *.png
# cd /usr/local/www/postfixadmin/languages/
# chmod 640 *.lang
# cd /usr/local/www/postfixadmin/templates/
# chmod 640 *.tpl
# cd /usr/local/www/postfixadmin/users/
# chmod 640 *.php
-----------------------------------------------
现在所有的后台服务已经正常工作了,现在我们就开始安装管理界面和用户界面,应注意的是postfixadmin的用户、组、权限的设定。
到此,postfixadmin的修改就已经全部完成,现在可以将postfixadmin这个目录复制或上传到你的web目录中了,然后打开浏览器,进入postfixadmin的管理界面http://www.yourdomain.com/postfixadmin/admin/index.php,这里就可以新建域名和管理员了(注意,通过应该先建域名,再建立管理员)。然后用新建立的管理员登录到http://www.yourdomain.com/postfixadmin/index.php(login.php)中就可以建立该域的邮箱了。
2)、安装iGENUS_2.0.2
从www.igenus.org处得到igenus_2.0.2_20040901_release.tgz,将其解开:
-----------------------------------------------
# tar -zxvf igenus_2.0.2_20040901_release.tgz
# mv igenus /usr/local/www/igenus
# cd /usr/local/www/igenus
-----------------------------------------------
由于igenus使用了自己的表结构,所以要在postfix的基础上使用igenus的所有功能,还需要进行比较大的修改,这里我们就不再讨论,本文中我们就向大家介绍如何使用户能够登录到igenus中,并且正常的发邮件和收邮件,其它功能就不再介绍。
首先需要修改igenus的配置文件,让其它知道如何与MySQL连接:
-----------------------------------------------
# cd config
# vi config_inc.php
-----------------------------------------------
根据你的实际情况修改以下内容(配置中的中文为笔者说明):
-----------------------------------------------
#CFG_BASEPATH = "/htdocs/mail/igenus"; //iGENUS的绝对路径
// Mysql
#CFG_MYSQL_HOST = 'localhost';
#CFG_MYSQL_USER = 'postfixadmin'; //因为用户需要在igenus中更改密码等,所以需要使用对数据库具有写权限的postfixadmin用户,而非拥有只读权限的postfix用户
#CFG_MYSQL_PASS = 'postfix';
#CFG_MYSQL_DB = 'postfix';
// Temp directory for maildir listing,mail body decodeing etc.
#CFG_TEMP = #CFG_BASEPATH."/temp"; //这里我们将igenus的临时目录设置为igenus安装目录下的temp目录
现在需要建立temp文件夹,并使其可被web服务器的用户读写:
# mkdir igenus/temp
# chmod 777 igenus/temp
-----------------------------------------------
同时要使igenus使用Postfixadmin的表结构,我们需要修改igenus目录中的login.php文件,以使用户能够正常登录。
-----------------------------------------------
# vi login.php
修改其中的:
#query = "SELECT * FROM vpopmail WHERE pw_name='#Post_name' and pw_domain='#Post_domain'";
为:
#query = "SELECT * FROM mailbox WHERE username='#Post_name@#Post_domain' and active='1'";
将:
#home = #data['pw_dir'];
#Post_passwd2 = #data['pw_passwd'];
#pw_id = #data['pw_id'];
#pw_shell = #data['pw_shell'];
#pw_gecos = #data['pw_gecos'];
#pw_gid = #data['pw_gid'];
#pw_domain = strtolower(#data['pw_domain']);
#pw_name = strtolower(#data['pw_name']);
修改为:
#home = "/var/mail/" . #data['maildir'] . "../";
#Post_passwd2 = #data['password'];
#pw_shell = #data['quota'];
#pw_gecos = #data['name'];
#pw_domain = strtolower(#data['domain']);
#pw_name = strtolower(#data['username']);
其中#home = "/var/mail/" . #data['maildir'] . "../";是告诉iGENUS邮件存储的路径,"/var/mail/"为我们的邮件存放目录,同时因为iGENUS进行读写邮件时会在#home变量后面加上字符串"Maildir/",但我们的MySQL数据表mailbox中的maildir字段中已经包含"Maildir/",所以为了让iGENUS得到正确的路径,我们在最后加上了字符串"../"
修改:
if (#pw_gid & 0x04){
PutLogs(#pw_id, 'login', "no priv to login","#Post_name@#Post_domain", #sql);
ErrorExit(-2); // 用户无权登录
}
if (#home !="" && (#Post_passwd2 == crypt(#Post_passwd,#Post_passwd2))){
为:
if (#pw_gid & 0x04){
PutLogs(#pw_id, 'login', "no priv to login","#Post_name@#Post_domain", #sql);
ErrorExit(-2); // 用户无权登录
}
if (#home !="" && (#Post_passwd2 == #Post_passwd)){
注释或者删除:
#_SESSION['G_ID'] = #pw_id;
-----------------------------------------------
保存修改,现在你就可以登录到igenus中了http:// www.yourdomain.com/igenus/index.php
注意igenus目录以及子目录文件的用户、组、权限的设定,不然无法登陆邮件系统。
3)、安装phpMyAdmin
-----------------------------------------------
# tar –zxvf phpMyAdmin-2.6.7.tar.gz
# mv phpMyAdmin-2.6.7 /usr/local/www/phpMyAdmin
# cd /usr/local/www/phpMyAdmin
修改phpMyAdmin配置文件config.inc.php
$cfg['PmaAbsoluteUri'] = 'http://192.168.0.2/phpMyAdmin/';
$cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (config, http or cookie based)?
-----------------------------------------------
指定phpmyadmin的认证方式为http方式
在浏览器输入http://192.168. 0.2/phpMyAdmin/,首次进行登入的用户名为root密码为空,登入后可以修改你的密码。
到这里,我们的Postfix Powered的邮件系统已经完成 
六、注意事项
1、 安装Apache和PHP时要检查php是否正确安装。
2、 检查Postfixadmin和iGENUS的目录及文件用户、组、权限的设置,通常在访问postfixadmin时页面没有反应以及iGENUS不能登陆时都是因为因为权限的问题。
3、 我使用的Igenus经过修改,需要增加vpopmail数据库,根据iGENUS中的SQL文件添加数据库表结构,并在phpMyAdmin登录数据库,修改postfixadmin用户对vpopmail的权限。 |
|