您的位置:首页 > 运维架构 > Linux

搭建Linux下邮件服务器(extmail+postfix+clamav)

2013-11-04 17:03 453 查看
部分软件简介:

  1、AMP ---apache(web服务) 、mysql(数据库)、php(非必需) 的简称

  2、postfix --mta 邮件系统核心

  3、courier-authlib--一个为courier-imap,maildrop,sasl2 提供用户信息的后台进程序

  4、courier-imap --提供pop3,pop3s,imap,imaps 服务的程序

  5、amavisd-new --提供内容过滤

  6、clamav -- 著名的杀毒软件

  7、extmail --一个著名的webmail程序

  8、extman --与extmail集成的后台管理程序

  安装环境:

  centos 5.4

  域名机器名:mail.uucun.lan

  域名:uucun.lan

  1、安装AMP

  [root@localhost ~]# yum -y install httpd httpd-devel mysql mysql-devel mysql-server php php-xml php-cli php-pdo php-mbstring
php-mcrypt php-gd php-common php-devel php-mysql

  修改启动配置并启动

  [root@localhost ~]# chkconfig --level 345 mysqld on

  [root@localhost ~]# chkconfig --level 345 httpd on

  [root@localhost ~]# service mysqld start

  [root@localhost ~]# service httpd start

  2、导入extman 后台数据库

  [root@localhost ~]# tar zxf extman-0.2.5b1.tar.gz

  [root@localhost ~]# cd extman-0.2.5b1/docs/

  [root@localhost docs]# mysql -uroot -p <extmail.sql

  Enter password:

  [root@localhost docs]# mysql -uroot -p <init.sql

  Enter password:

  如何使用了phpmyadmin改了root 密码,记得输入密码,如果密码为空,请按回车。

  3、安装authlib

  A、安装依懒的包

  [root@localhost ~]# yum -y install postgresql-devel expect libtool-ltdl-devel

  B、安装生成的rpm

  [root@localhost i386]# rpm -ivh courier-authlib-0.62.0-1.i386.rpm

  [root@localhost i386]# rpm -ivh courier-authlib-devel-0.62.0-1.i386.rpm

  [root@localhost i386]# rpm -ivh courier-authlib-mysql-0.62.0-1.i386.rpm

  C、配置authlibdaemon

  [root@localhost i386]# cd /etc/authlib/

  [root@localhost authlib]# mv authdaemonrc authdaemonrc.bak

  [root@localhost authlib]# vim authdaemonrc

  输入下面的内容:

  authmodulelist="authmysql"

  authmodulelistorig="authmysql"

  daemons=10

  authdaemonvar=/var/spool/authdaemon

  DEBUG_LOGIN=2

  DEFAULTOPTIONS="wbnodsn=1"

  LOGGEROPTS=""

  D、配置authmysqlrc

  [root@localhost authlib]# mv authmysqlrc authmysqlrc.bak

  [root@localhost authlib]# vim authmysqlrc

  输入下面的内容:

  MYSQL_SERVER localhost

  MYSQL_USERNAME root #这里需要输入对extmail数据库有操作权限的mysql用户名

  MYSQL_PASSWORD uusql#2010 #这里需要输入对extmail数据库有操作权限的mysql密码

  MYSQL_PORT 0

  MYSQL_SOCKET /tmp/mysql.sock

  MYSQL_OPT 0

  MYSQL_DATABASE extmail

  MYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,\

  CONCAT('/home/data/domains/',homedir), \

  CONCAT('/home/data/domains/',maildir), \

  quota, \

  name \

  FROM mailbox \

  WHERE username = '$(local_part)@$(domain)'

  E、启动authlib

  [root@localhost ~]# service courier-authlib start

  Starting Courier authentication services: authdaemond

  [root@localhost ~]# chmod 777 /var/spool/authdaemon/

  4、安装courier-imap

  [root@localhost ~]# rpm -ivh courier-imap-4.1.2-1.i386.rpm

  [root@localhost ~]# service courier-imap start

  5、安装cyrus-sasl

  A、安装SRPM

  [root@localhost i386]# rpm -e --nodeps cyrus-sasl-devel cyrus-sasl-plain cyrus-sasl cyrus-sasl-lib (如果这些包存在)

  [root@localhost i386]# rpm -ihv cyrus-sasl-lib-2.1.22-5.el5.i386.rpm

  [root@localhost i386]# rpm -ihv cyrus-sasl-2.1.22-5.el5.i386.rpm

  [root@localhost i386]# rpm -ihv cyrus-sasl-plain-2.1.22-5.el5.i386.rpm

  B、配置sasl2

  创建/usr/lib/sasl2/smtpd.conf 文件,输入下面的内容:

  pwcheck_method:authdaemond

  log_level:3

  mech_list:PLAIN LOGIN

  authdaemond_path:/var/spool/authdaemon/socket

  6、安装postfix

  A、安装软件包

  [root@localhost i386]# rpm -ivh postfix-2.5.4-2.rhel4.i386.rpm

  B、切换mta

  [root@localhost i386]# alternatives --config mta (选择2,postfix)

  [root@localhost i386]# rpm -e sendmail

  [root@localhost i386]# cd /usr/sbin/

  [root@localhost sbin]# mv sendmail sendmail.bak

  [root@localhost sbin]# newaliases

  [root@localhost sbin]# ln -s sendmail.postfix sendmail

  C、配置postfix

  [root@localhost ~]# cd /etc/postfix/

  [root@localhost postfix]# mv main.cf main.cf.bak

  [root@localhost postfix]# vim main.cf

  输入下面的内容:

  queue_directory = /var/spool/postfix

  command_directory = /usr/sbin

  daemon_directory = /usr/libexec/postfix

  data_directory = /var/lib/postfix

  mail_owner = postfix

  unknown_local_recipient_reject_code = 550

  debug_peer_level = 2

  debugger_command =

  PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin

  ddd $daemon_directory/$process_name $process_id & sleep 5

  sendmail_path = /usr/sbin/sendmail.postfix

  newaliases_path = /usr/bin/newaliases.postfix

  mailq_path = /usr/bin/mailq.postfix

  setgid_group = postdrop

  html_directory = /usr/share/doc/postfix-2.5.2-documentation/html

  manpage_directory = /usr/share/man

  sample_directory = /etc/postfix

  readme_directory = /usr/share/doc/postfix-2.5.2-documentation/readme

  alias_database = hash:/etc/postfix/aliases

  alias_maps = hash:/etc/postfix/aliases

  myhostname = mail.uucun.lan

  mydomain = uucun.lan

  mydestination = $myhostname

  smtpd_banner = uucun.lan ESMTP Mail System

  message_size_limit = 14680064

  virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

  virtual_mailbox_base = /home/data/domains

  virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

  virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

  virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_limit_maps.cf

  virtual_transport = maildrop:

  maildrop_destination_recipient_limit = 1

  #sasl

  smtpd_sasl_auth_enable = yes

  smtpd_sasl2_auth_enable = yes

  smtpd_sasl_security_options = noanonymous

  broken_sasl_auth_clients = yes

  smtpd_recipient_restrictions =

  permit_mynetworks,

  permit_sasl_authenticated,

  reject_unauth_destination,

  reject_unauth_pipelining,

  reject_invalid_hostname

  复制extman/docs 目录的cf 文件到/etc/postfix

  [root@localhost postfix]# cp /root/extman-0.2.5b1/docs/mysql_virtual_* .

  并修改这些配置文件的用户名为root,密码为uusql#2010

  [root@localhost postfix]# service postfix start

  7、安装maildrop

  A、创建安装maildrop rpm

  [root@localhost SPECS]# yum -y install pcre-devel

  [root@localhost i386]# rpm -ivh maildrop-2.0.4-1.i386.rpm

  B、添加虚似用户及创建目录

  [root@localhost i386]# cd

  [root@localhost ~]# groupadd -g 1000 vgroup

  [root@localhost ~]# useradd -g 1000 -u 1000 -s /sbin/nologin -d /dev/null vuser

  编辑/etc/postfix/master.cf ,加入下面的内容:

  maildrop unix - n n - - pipe

  flags=DRhu user=vuser argv=/usr/bin/maildrop -d ${user}@${nexthop}
${recipient} ${user} ${extension} ${nexthop}

  C、创建邮件存储目录

  [root@localhost ~]# mkdir -p /home/data/domains/extmail.org/postmaster

  [root@localhost ~]# maildirmake /home/data/domains/extmail.org/postmaster/Maildir

  [root@localhost ~]# chown -R vuser:vgroup /home/data/domains/

  D、测试maildrop

  [root@localhost ~]# echo "test" | maildrop -V 10 -d postmaster@extmail.org

  maildrop: authlib: groupid=1000

  maildrop: authlib: userid=1000

  maildrop: authlib: logname=postmaster@extmail.org,
home=/home/data/domains/extmail.org/postmaster, mail=/home/data/domains/extmail.org/postmaster/Maildir/

  maildrop: Changing to /home/data/domains/extmail.org/postmaster

  Message start at 0 bytes, envelope sender=postmaster@extmail.org

  maildrop: Attempting .mailfilter

  maildrop: Delivery complete.

  出现上以信息说明authlib,maildrop 工作正常

  E、测试pop3

  [root@localhost ~]# telnet localhost 110

  Trying 127.0.0.1...

  Connected to localhost.localdomain (127.0.0.1).

  Escape character is '^]'.

  +OK Hello there.

  user postmaster@extmail.org

  +OK Password required.

  pass extmail

  +OK logged in.

  list

  +OK POP3 clients that break here, they violate STD53.

  1 6

  .

  retr 1

  +O

K 6 octets follow.

  test

  .

  quit

  +OK Bye-bye.

  Connection closed by foreign host.

  F、测试postfix

  [root@localhost ~]# perl -MMIME::Base64 -e 'print encode_base64("postmaster\@extmail.org");'

  cG9zdG1hc3RlckBleHRtYWlsLm9yZw==

  [root@localhost ~]# perl -MMIME::Base64 -e 'print encode_base64("extmail");'

  ZXh0bWFpbA==

  [root@localhost ~]# service postfix restart (重启一下)

  [root@localhost ~]# telnet localhost 25

  Trying 127.0.0.1...

  Connected to localhost.localdomain (127.0.0.1).

  Escape character is '^]'.

  220 uucun.lan ESMTP Mail System

  ehlo test.com

  250-mail.uucun.lan

  250-PIPELINING

  250-SIZE 14680064

  250-VRFY

  250-ETRN

  250-AUTH LOGIN PLAIN

  250-AUTH=LOGIN PLAIN

  250-ENHANCEDSTATUSCODES

  250-8BITMIME

  250 DSN

  auth login

  334 VXNlcm5hbWU6

  cG9zdG1hc3RlckBleHRtYWlsLm9yZw==

  334 UGFzc3dvcmQ6

  ZXh0bWFpbA==

  235 2.7.0 Authentication successful

  quit

  221 2.0.0 Bye

  Connection closed by foreign host

  8、安装amavisd-new杀毒软件

  编辑/etc/yum.repos.d/CentOS-Base.repo 加入下面的内容:

  [dag]

  name=Dag RPM Repostory for Red Hat Enterprise Linux

  baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag

  gpgcheck=1

  enabled=1

  gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

  [root@localhost ~]# yum -y install clamav clamav-db clamd clamav-devel amavisd-new

  编辑/etc/amavisd.conf,修改下面的内容

  $mydomain = 'uucun.lan'; # a convenient default for other settings

  把下面内容去掉注释,并修改为下面

  ['ClamAV-clamd',

  \&ask_daemon, ["CONTSCAN {} ", "/tmp/clamd.socket"],

  qr/\bOK$/, qr/\bFOUND$/,

  qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

  [root@localhost ~]# usermod -G amavis clamav

  [root@localhost ~]# service clamd start

  在/etc/postfix/master.cf 增加下面的内容:

  smtp-amavis unix - - n - 4 smtp

  -o smtp_data_done_timeout=1200

  -o smtp_send_xforward_command=yes

  -o disable_dns_lookups=yes

  127.0.0.1:10025 inet n - n - - smtpd

  -o content_filter=

  -o local_recipient_maps=

  -o relay_recipient_maps=

  -o smtpd_restriction_classes=

  -o smtpd_helo_restrictions=

  -o smtpd_sender_restrictions=

  -o smtpd_recipient_restrictions=permit_mynetworks,reject

  -o mynetworks=127.0.0.0/8

  -o strict_rfc821_envelopes=yes

  -o smtpd_error_sleep_time=0

  -o smtpd_soft_error_limit=1001

  -o smtpd_hard_error_limit=1000

  -o receive_override_options=no_header_body_checks

  在/etc/postfix/main.cf 加入下面的内容

  content_filter = smtp-amavis:[localhost]:10024

  [root@localhost ~]# service postfix reload

  9、安装extman/extmail

  A、配置apache

  修改/etc/httpd/conf/httpd.conf,将下面的选项改为:

  User vuser

  Group vgroup

  [root@localhost ~]# cd /etc/httpd/conf.d/

  [root@localhost conf.d]# vim extmail.conf

  输入下面的内容:

  Alias /extman/cgi/ /var/www/extsuite/extman/cgi/

  Alias /extman /var/www/extsuite/extman/html/

  <Location "/extman/cgi">

  SetHandler cgi-script

  Options +ExecCGI

  </Location>

  # config for ExtMail

  #Alias /cgi /var/www/extsuite/extmail/cgi/

  #Alias / /var/www/extsuite/extmail/html/

  Alias /extmail/cgi/ /var/www/extsuite/extmail/cgi/

  Alias /extmail /var/www/extsuite/extmail/html/

  <Location "/extmail/cgi">

  SetHandler cgi-script

  Options +ExecCGI

  </Location>

  [root@localhost ~]# mkdir /var/www/extsuite

  [root@localhost ~]# tar zxf extmail-1.0.5b1.tar.gz

  [root@localhost ~]# cp -r extmail-1.0.5b1 /var/www/extsuite/extmail

  [root@localhost ~]# cp -r extman-0.2.5b1 /var/www/extsuite/extman

  B、配置extmail参数

  [root@localhost ~]# cd /var/www/extsuite/extmail/

  [root@localhost extmail]# cp webmail.cf.default webmail.cf

  修改webmail.cf 下面的选项

  SYS_SESS_DIR = /tmp/extmail

  SYS_MAILDIR_BASE = /home/data/domains

  SYS_MYSQL_USER = root

  SYS_MYSQL_PASS = uusql#2010

  C、配置extman参数

  [root@localhost extmail]# cd /var/www/extsuite/extman/

  修改webman.cf 下面的选项:

  SYS_MAILDIR_BASE = /home/data/domains

  D、创建session 目录

  [root@localhost extman]# mkdir /tmp/{extman,extmail}

  [root@localhost extman]# chown vuser:vgroup /tmp/ext*

  E、配置后台日志分析工具

  [root@localhost addon]# cd /var/www/extsuite/extman/addon/

  [root@localhost addon]# cp -r mailgraph_ext /usr/local/

  将下面的内容加入/etc/rc.local

  /usr/local/mailgraph_ext/mailgraph-init start

  /usr/local/mailgraph_ext/qmonitor-init start

  安装所依懒的软件包

  [root@localhost mailgraph_ext]# yum -y install rrdtool perl-rrdtool perl-GD perl-File-Tail

  F、启动后台进程

  [root@localhost mailgraph_ext]# /usr/local/mailgraph_ext/qmonitor-init start

  Starting queue statistics grapher: qmonitor

  [root@localhost mailgraph_ext]# /usr/local/mailgraph_ext/mailgraph-init start

  Starting mail statistics grapher: mailgraph_ext

  G、访问extmail/extman

  打开浏览器,输入http://your_ip_address/extmail 注意:your_ip_address 为你实际的ip

  第一个测试用户为:postmaster 密码:extmail 域:extmail

  打开浏览器,输入http://your_ip_address/extman

  extman root 用户为:root@extmail.org 密码为:extmail*123*

  注意:进入系统后要修改密码及找回密码的提示问题、答案。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: