http://10.1.1.35/ule_exec/exec07_clamav_postfixadmin.txt

来源:互联网 发布:三级数据库和网络技术 编辑:程序博客网 时间:2024/05/16 15:41
--

  Clam AntiVirus 是一款 UNIX 下开源的 (GPL) 反病毒工具包,专为邮件网关上的电子邮件扫描而设计。该工具包提供了包含灵活且可伸缩的监控程序、命令行扫描程序以及用于自动更新数据库的高级工具在内的大量实用程序。该工具包的核心在于可用于各类场合的反病毒引擎共享库。


官网:
http://www.clamav.net/lang/en/


[root@li ~]# ls /share/soft/clamav/clamav-0.96.1.tar.gz

tar xvf clamav-0.96.1.tar.gz -C /usr/src/

useradd -s /sbin/nologin clamav



1,编译安装clam antivirus ( 时间有点长,大概需要20分钟 )
[root@li clamav-0.96.1]# ./configure ;make ;make install


2,配置clamav软件
[root@li clamav-0.96.1]# mkdir /var/lib/clamav --创建病毒庫目录
[root@li clamav-0.96.1]# chown clamav.clamav !$
chown clamav.clamav /var/lib/clamav

[root@li clamav-0.96.1]# mkdir /var/run/clamav --创建套接字,pid运行目录
[root@li clamav-0.96.1]# chown clamav.clamav !$
chown clamav.clamav /var/run/clamav

[root@li clamav-0.96.1]# mkdir /var/log/clamav --创建日志文件目录
[root@li clamav-0.96.1]# chown clamav.clamav !$
chown clamav.clamav /var/log/clamav

3,修改更新病毒库配置文件
[root@li clamav-0.96.1]# vim /usr/local/etc/freshclam.conf

#Example --注意这个要注释掉,否则后面会报错找不到配置文件

DatabaseDirectory /var/lib/clamav--database目录,对应前面创建的目录
UpdateLogFile /var/log/clamav/freshclam.log --日志文件,对应写上前面创建的目录
PidFile /var/run/clamav/freshclam.pid --服务运行的pid文件,对应写上前面创建的目录
DatabaseMirror database.clamav.net--病毒庫下载的站点
DatabaseMirror clamav.sonic.net
DatabaseMirror clamav.netopia.pt
DatabaseMirror clamav.inet6.fr--这三个是找的镜像站点
NotifyClamd /usr/local/etc/clamd.conf--指定杀毒软件的主配置文件


[root@li clamav-0.96.1]# touch /var/log/clamav/freshclam.log --日志文件要手动建立,并修改其权限
[root@li clamav-0.96.1]# chown clamav.clamav !$
chown clamav.clamav /var/log/clamav/freshclam.log

修改杀毒软件的主配置文件
[root@li clamav-0.96.1]# vim /usr/local/etc/clamd.conf

#Example --这个也要注释掉

LogFile /var/log/clamav/clamd.log
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /var/tmp
DatabaseDirectory /var/lib/clamav
LocalSocket /var/run/clamav/clamd.socket
ExcludePath ^/proc/
ExcludePath ^/sys/--这两个是一个关于病毒扫描目录的过滤,用正则表达式区分
VirusEvent /bin/mail -s "VIRUS ALERT: %v" clamav@li.cluster.com < /etc/virus.alert--当发现病毒后就触发一个事件,这里是把/etc/virus.alert文件的内容发信给clamav用户
User clamav


[root@li clamav-0.96.1]# touch /var/log/clamav/clamd.log --创建clamd服务日志
[root@li clamav-0.96.1]# chown clamav.clamav !$
chown clamav.clamav /var/log/clamav/clamd.log
[root@li clamav-0.96.1]# echo "found virus" > /etc/virus.log --把配置文件里定义的病毒事件的这个文件给创建出来


增加服务启动脚本
[root@li clamav-0.96.1]# cp /usr/src/clamav-0.96.1/clamd/clamd /etc/init.d/
--把服务脚本的模版拷到系统存放服务脚本的地方
root@li clamav-0.96.1]# chmod 755 /etc/init.d/clamd --一般来说服务模版文件拷到这里后都要修改为能够执行的权限,所以都要做这一步,但这个脚本默认是已经改好了755权限,所以这里可以省略这一步


[root@li clamav-0.96.1]# vim /etc/init.d/clamd --如果要支持开机自启动,必须要有下面两行,格式不要写错
# chkconfig: - 86 19
# description: A anti virus software

[root@li clamav-0.96.1]# chkconfig --add clamd --加入后,就可以chkconfig clamd on来开机自启动了


更新病毒库
[root@li clamav-0.96.1]# freshclam--一个命令就可以去更新病毒库
ClamAV update process started at Sun Jul 11 17:33:00 2010
Downloading main.cvd [ 11%]--它会去下载病毒库,这里是下载主病毒库到11%



更新病毒库过后,启动服务
/etc/init.d/clamd start --如果这里报配置文件找不到的,注意可能是配置文件里 example没有注释


服务启动过后,使用
clamscan 扫描








--------------------------------------------------------------------------

postfix+postfixadmin+dovecot+mysql+squirrelmail




安装前准备
主机名
时间同步
关闭iptables ,selinux





第一大步:
安装mysql,postfixadmin,httpd

[root@station209 ~]# yum install mysql* php-mysql php* -y

[root@station209 ~]# yum install http* -y


[root@station209 ~]# /etc/init.d/mysqld start --安装完后直接启动,第一次启动会有很多信息,是在自动执行数据库的初始化工作


[root@station209 ~]# mysql--登录数据库

mysql> show databases;--查看目前有的库,下面三个是初始化才有的三个库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+


安装postfixadmin (管理postfix的一个web界面的软件)

[root@station209 ~]# mount 10.1.1.35:/share/soft /mnt
[root@station209 ~]# cp /mnt/postfix+postfixadmin/postfixadmin-2.1.0.gz /root/

[root@station209 ~]# tar xvf /root/postfixadmin-2.1.0.gz -C /var/www/html/
--解压到apache的家目录,这里apache是用的rpm版,没有改家目录的,所以就是/var/www/html/下


[root@station209 ~]# cd /var/www/html/
[root@station209 html]# mv postfixadmin-2.1.0/ postfixadmin --改一下名字,便于在web地址栏访问


[root@station209 postfixadmin]# mysql < /var/www/html/postfixadmin/DATABASE_MYSQL.TXT --postfix有一个mysql数据库的导表的文件,使用这条命令,直接导入数据库,就会自动创建postfix要使用的一些表

[root@station209 postfixadmin]# mysql--再次登录验证

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| postfix | --多了一个postfix库,是刚才导入的
| test |
+--------------------+

mysql> use postfix;--进入postfix库

mysql> show tables;--查看库里的表,下面这些表就是刚才导入的,目前是空表
+-------------------+
| Tables_in_postfix |
+-------------------+
| admin |
| alias |
| domain |
| domain_admins |
| log |
| mailbox |
| vacation |



这里使用浏览器http://10.1.1.209/postfixadmin 访问postfix的web安装界面

点setup安装,会有一个警告和一个错误 ,错误是提示找不到config.ini.php文件

警告解决方法:
vim /etc/php.ini
magic_quotes_gpc = ON--把这个改为ON


错误的解决方法:
[root@station209 /]# mv /var/www/html/postfixadmin/config.inc.php.sample /var/www/html/postfixadmin/config.inc.php --有一个模版配置文件,重命名

[root@station209 /]# vim /var/www/html/postfixadmin/config.inc.php --修改

$CONF['default_language'] = 'cn';--如果想要中文界面的话,改为cn,当然系统要是中文的

$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO'; --这两个与后面postfix的mailbox设置有关


再次刷新web界面,会提示要删除setup.php文件

[root@station209 /]# rm /var/www/html/postfixadmin/setup.php -rf


再次访问http://10.1.1.209/postfixadmin --会发现有乱码,这是因为httpd的语言集不一致造成的


[root@station209 /]# vim /etc/httpd/conf/httpd.conf

AddDefaultCharset GB2312 --把UTF-8 ,改为GB2312

[root@station209 /]# /etc/init.d/httpd restart --重启服务后,再次访问web界面就OK了

------------------------



使用下面地址,访问管理页面
http://10.1.1.209/postfixadmin/admin --刚进来,会有新特性等信息,提示删除motd文件


[root@station209 /]# rm /var/www/html/postfixadmin/motd* -rf

再访问管理页面,就没有那些信息了

这里手动添加两个域,我这里加了一个aaa.com 和 bbb.com这两个域

再增加一个管理员, 同时能管理这两个域,我这里管理员为admin@aaa.com


修改完成后,因为这是管理页面,不对外开放,那么可以使用系统权限来对其进行限制

[root@station209 /]# chmod 000 /var/www/html/postfixadmin/admin/ --把这个目录权限改为000,那么管理页面就不能再访问了,如果想再进管理页面进行信息的修改的话,可以把这个目录权限改回755就可以了




----------------------------------------------------------------------------

第二大步,安装postfix
这里我们不使用rpm版的postfix,因为rpm版默认不支持mysql,所以需要源码版重新编译

可以去redhat的ftp网站下载
ftp://ftp.redhat.com

postfix-2.3.3-2.1.el5_2.src.rpm


[root@station209 ~]# useradd -s /bin/nologin brewbuilder
[root@station209 ~]# rpm -ivh postfix-2.3.3-2.1.el5_2.src.rpm

[root@station209 ~]# cd /usr/src/redhat/SPECS/
[root@station209 SPECS]# ls
postfix.spec--这是rpm 的src包的配置文件

[root@station209 SPECS]# vim postfix.spec

%define MYSQL 1--把0改为1,让它支持mysql

[root@station209 SPECS]# rpmbuild -ba postfix.spec --这里依赖性需要pcre-devel包,先确认安装这个包再rpmbuild -ba postfix.spec来编译postfix


编译完成后会看到
Wrote: /usr/src/redhat/SRPMS/postfix-2.3.3-2.1.src.rpm
Wrote: /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.1.i386.rpm --编译出来的支持mysql的rpm包
Wrote: /usr/src/redhat/RPMS/i386/postfix-pflogsumm-2.3.3-2.1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/postfix-debuginfo-2.3.3-2.1.i386.rpm


[root@station209 SPECS]# rpm -ivh /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.1.i386.rpm

--这里拷贝一个模版配置文件
[root@station209 SPECS]# cp /mnt/postfix+postfixadmin/config_files/main.cf /etc/postfix/
cp: overwrite `/etc/postfix/main.cf'? y

--拷贝和数据库连接相关的几个配置文件
[root@station209 SPECS]# cp /mnt/postfix+postfixadmin/config_files/mysql_virtual_* /etc/postfix/




------------

--五个配置文件的配置内容如下


[root@station209 SPECS]# cat /etc/postfix/main.cf

#=====================BASE=========================
myhostname = li.aaa.com
mydomain = aaa.com--这里改成服务器主机名
myorigin = $mydomain
mydestination = $myhostname localhost localhost.$mydomain
mynetworks = 127.0.0.0/8
inet_interfaces = all
#=====================Vritual Mailbox settings=========================
virtual_minimum_uid = 80--这里要小于89,因为默认安装的postfix用户uid为89
virtual_mailbox_base = /var/spool/mail
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf --这里有mysql相关的,就是与mysql的连接设置
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:89
virtual_gid_maps = static:89
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
#====================QUOTA========================
message_size_limit = 52428800
mailbox_size_limit = 209715200
virtual_mailbox_limit = 209715200
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
#====================SASL========================
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination,permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner=$myhostname ESMTP "Version not Available"

readme_directory = no
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
html_directory = no
setgid_group = postdrop
command_directory = /usr/sbin
manpage_directory = /usr/local/man
daemon_directory = /usr/libexec/postfix
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
queue_directory = /var/spool/postfix
mail_owner = postfix


vim /etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username


vim /etc/postfix/mysql_virtual_mailbox_limit_maps.cf

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username

vim /etc/postfix/mysql_virtual_domains_maps.cf

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain

vim /etc/postfix/mysql_virtual_alias_maps.cf

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address


-----------------------------

停止sendmail,启动postfix,也可以使用system-swith-mail去切换MTA
[root@station209 SPECS]# /etc/init.d/sendmail stop

[root@station209 SPECS]# /etc/init.d/postfix start

修改邮件目录的属主
[root@station209 SPECS]# chown postfix.postfix /var/spool/mail/ -R



-------------------------------------------------------------------


第三大步:
安装dovecot

[root@station209 SPECS]# yum install dovecot -y

--拷贝两个配置文件的模版
[root@station209 SPECS]# cp /mnt/postfix+postfixadmin/config_files/dovecot* /etc
cp: overwrite `/etc/dovecot.conf'? y


------------------
--两个配置文件内容如下:

[root@station209 SPECS]# cat /etc/dovecot.conf

base_dir=/var/run/dovecot
protocols=imap pop3
listen=*
disable_plaintext_auth = no
ssl_disable = yes
mail_location = maildir:/var/spool/mail/%d/%n

auth default {
mechanisms = PLAIN LOGIN CRAM-MD5 DIGEST-MD5
passdb sql {
args = /etc/dovecot-mysql.conf
}
userdb sql {
args = /etc/dovecot-mysql.conf
}
socket listen {
client {
path = /var/run/dovecot/auth-client
mode = 0660
user = postfix
group = postfix
}
}
}
first_valid_uid = 89

[root@station209 SPECS]# cat /etc/dovecot-mysql.conf

driver = mysql
connect = host=/var/lib/mysql/mysql.sock dbname=postfix user=postfix password=postfix
default_pass_scheme = MD5
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 89 AS uid, 89 AS gid FROM mailbox WHERE username = '%u'

--启动服务
[root@station209 SPECS]# /etc/init.d/dovecot start


--------------------------------------------------------------------------

第四大步:安装一个webmail 这里用squirrelmail

[root@li ~]# yum install squirrelmail -y

$provider_uri = 'http://10.1.1.209/postfixadmin/users';

$squirrelmail_default_language = 'zh_CN';

[root@li ~]# chown apache.apache /var/lib/squirrelmail/prefs/
[root@li ~]# chown apache.apache /var/spool/squirrelmail/attach/
[root@li ~]# chown root.apache /etc/squirrelmail/config.php

[root@li ~]# /etc/init.d/httpd restart





可以使用http://10.1.1.209/webmail/ 来使用用户登录





----------------------------------------------------------

第五大步:测试

1,首先创建测试用户
通过http://10.1.1.209/postfixadmin 使用创建的管理员admin@aaa.com登录

登录后,创建每个域都创建一个用户用来测试
我这里创建的两个用户分别是 aaa@aaa.combbb@bbb.com

这些新建的用户信息都可以在mysql数据库的postfix库里查看的


2,使用xp的outlook来进行收发邮件的测试
注意:使用outlook填用户时记得写全名也就是user@domain.com这种格式,因为这里有多个域,不写全的话会有错误

我这里使用aaa@aaa.com登录outlook,登录后点发送/接收按钮会收到admin@aaa.com的欢迎邮件表示OK

我使用aaa@aaa.com发送给bbb@bbb.com,直接发送不了,因为我们配置了验证的

所以在outlook要点 工具-->帐户-->属性-->服务器-->最下面的我的服务器要求身份验证打勾


再次发送,然后使用bbb@bbb.com登录squirrelmail来接收,测试 OK



----------------

注意上面的服务可以全部设置成开机自动启动
chkconfig httpd on
chkconfig mysql on
chkconfig postfix on
chkconfig dovecot on



















原创粉丝点击