zoukankan      html  css  js  c++  java
  • LINUX下的Mail服务器的搭建

    电子邮件是因特网上最为流行的应用之一。如同邮递员分发投递传统邮件一样,电子邮件也是异步的,也就是说人们是在方便的时候发送和阅读邮件的,无须预先与别人协同。与传统邮件不同的是,电子邮件既迅速,又易于分发,而且成本低廉。另外,现代的电子邮件消息可以包含超链接、HTML格式文本、图像、声音甚至视频数据。

    首先我们的Mail服务器是建立在LAMP的基础上的,所以我们先要搭建一下我们的LAMP环境。

    我们用到的软件有: httpd-2.2.9.tar.gz ,mysql-5.0.56.tar.gz ,php-5.2.6.tar.bz2 。

    下面我们开始配置环境

    1. # tar -zxvf httpd-2.2.9.tar.gz -C /usr/src/

       # cd /usr/src/httpd-2.2.9/

       # ./configure --prefix=/usr/local/apache2 

       --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/lib --enable-auth-digest 

       --enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot        =/usr/local/apache2/htdocs  && make && make install(编译安装)

      # service httpd stop

      # chkconfig --level 2345 httpd off

      # cd /usr/local/apache2/bin/

      # ./apachectl start

      # ./apachectl restart

      # lsof -i:80

     2. 编译安装mysql并进行配置

      # tar -zxvf mysql-5.0.56.tar.gz -C /usr/src/

      # cd /usr/src/mysql-5.0.56/

      # useradd -M -s /sbin/nologin mysql     # 添加一个mysql的非登陆用户

      # ./configure --prefix=/usr/local/mysql && make && make install      # 编译安装

      # cd support-files

      # cp my-medium.cnf /etc/my.cnf  #建立配置文件

      # cd /usr/local/mysql

      # ./mysql_install_db --user=mysql

      # chown -R root.mysql /usr/local/mysql/   # 修改所属组

      # chown -R mysql /usr/local/mysql/var/

      # cd /usr/local/mysql/bin

      # ./mysqld_safe --user=mysql &

      # ./mysql                              # 启动mysql 

    3. 安装PHP软件,并进行配置。

      # tar -jxvf /mnt/Linux-server/LNS-SG5/php-5.2.6.tar.bz2 -C .

      # cd php-5.2.6/323  

      # ./configure --prefix=/usr/local/php5 --enable-mbstring --with-   apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ 

      --with-config-file-path=/usr/local/php5 && make && make install

      # cp  /usr/src/php/php.ini-dist   /usr/local/php5/php.ini 

      # vim /usr/local/apache2/conf/httpd.conf 添加以下两行

        AddType application/x-httpd-php .php  添加

        DirectoryIndex index.php index.html 修改

     # cd /usr/local/apache2/bin

      # ./apachectl restart   #  启动

    至此我们的LAMP环境就搭建完成了。我们开始搭建我们的mail服务器。

    4.邮件传输代理(MTA) Postfix 2.5.3 使用最新版本2.5.3 数据库/目录服务 MySQL 5.0  可选openLDAP或NetScape LDAP,本文以MySQL为蓝本,邮件投递代理(MDA) maildrop 2.0.x 支持过滤和强大功能 Web帐户管理后台 ExtMan 0.2.5 支持无限域名、无限用户 POP3 服务器 Courier-IMAP 对于大部分企业而言完全足够.WebMail 系统 ExtMail 1.1 支持多语言、全部模板化,功能基本齐全 SMTP认证库 Cyrus SASL  标准的SASL实现库,可以支持Courier authlib 

    其他数据认证库 Courier Authlib 0.60 authlib是maildrop, courier-imap等服务的关键部件 

    日志分析及显示 mailgraph_ext 在ExtMan中已经包含了. Web 服务器 Apache 2.x OS 自带 .

    我们开始安装postfix

    首先我们需要停掉sendmail,然后安装这几个必备的包,可能你的在装机时已经装上了。然后通过yum 安装postfix ,这里我们已经装过了。执行postconf -m 我们查看一下它是否支持mysql验证。好了,我们的第一步就算完成了。

    5. 接下来我们开始修改postfix的配置文件:

    除了图上的两处还有

    inet_interfaces = all   115行

    mynetworks = 192.168.0.0/24, 127.0.0.0/8   262行

    然后我们重启postfix.

    6. 配置好postfix 之后我们来安装authlib,使用authlib登陆验证.这样可以不用管后台用户数据是用什么方式存储的.比方说MySQL/LDAP

    7. 安装完毕后我们需要修改以下配置文件。

    8  . 修改Mysql支持的相关配置文件

       #  vim /etc/authlib/authmysqlrc 

       MYSQL_SERVERlocalhost     26行

       MYSQL_USERNAMEextmail

       MYSQL_PASSWORDextmail

       MYSQL_SOCKET/var/lib/mysql/mysql.sock

       MYSQL_PORT3306

       MYSQL_DATABASEextmail

       MYSQL_USER_TABLEmailbox

       MYSQL_CRYPT_PWFIELDpassword

       MYSQL_UID_FIELDuidnumber

       MYSQL_GID_FIELDgidnumber

       MYSQL_LOGIN_FIELDusername

       MYSQL_HOME_FIELDconcat('/var/mailbox/',homedir)用户家目录的绝对路径

       MYSQL_MAILDIR_FIELDconcat('/var/mailbox/',maildir)

    重新启动courier-authlib, 并创建邮箱目录

      # service courier-authlib start 

      # mkdir /var/mailbox

    9. 安装courier-imap 屏蔽IMAP服务

     # yum install courier-imap 

    ExtMail目前还没有正式支持IMAP目录,因此需要屏蔽IMAP,只提供pop3服务。而就目前的使用情况来看,IMAP使用的非常少,绝大部分OutLook/Foxmail用户都习惯使用POP3而非IMAP。

      # vim /usr/lib/courier-imap/etc/imapd 

       IMAPDSTART=NO

      # vim /usr/lib/courier-imap/etc/imapd-ssl 

       IMAPDSSLSTART=NO 

    重新启动courier-imap

      # service courier-imap start 

    10. 安装maildrop

    maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,是courier邮件系统组件之一,我们在此将使用maildrop来代替postfix自带的MDA。

      # yum install maildrop 

    为了使Postfix支持Maildrop,必须修改/etc/postfix/master.cf文件:

      # vim /etc/postfix/master.cf

      63 maildrop   unix        -       n        n        -        -        pipe

      64   flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient}   ${user} ${extension} {nexthop}

    注意上面一行前面要有2个空格,否则启动失败

    配置main.cf 由于maildrop不支持一次接收多个收件人,因此必须在main.cf里增加如下参数:

      maildrop_destination_recipient_limit = 1

      # maildrop -v   测试

      检查安装结果,请确保有"Courier Authentication Library extension enabled."一句出现:

    maildrop RPM包安装时,会自动创建vuser用户及vgroup用户组,专门用于邮件的存 储, vuser:vgroup的uid/gid都是1000

    修改邮箱目录属性:

    chown vuser.vgroup /var/mailbox -R

    11. 安装cyrus-sasl         ========用户登录验证

      # yum install cyrus-sasl                          官网:wiki.extmail.org

    开启postfix的smtp认证

      # vim /etc/postfix/main.cf

      smtpd_sasl_auth_enable = yes

       smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination

    让postfix支持虚拟用户

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

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

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

       virtual_transport = maildrop

       # local_recipient_maps = (注释去掉)  209行

    编辑smtpd.conf文件,   让虚拟用户到mysql数据库认证

      # vim /usr/lib64/sasl2/smtpd.conf 

       pwcheck_method: authdaemond

       log_level: 3

       mech_list: PLAIN LOGIN

       authdaemond_path:/var/spool/authdaemon/socket

    修改authdaemon socket目录权限 

    如果该目录权限不正确修改,maildrop及postfix等将无法正确获取用户的信息及密码认证:

       # chmod -R 777 /var/spool/authdaemon/

       # service saslauthd start

    12. 安装ExtMail和extman       ======安装web界面 MUA 

       # yum install extsuite-webmail 

       # cd /var/www/extsuite/extmail

       # cp webmail.cf.default webmail.cf

       # vim webmail.cf 

    语言选项,可改作:

       SYS_USER_LANG = zh_CN        77行

    此处即为您在前文所设置的用户邮件的存放目录,可改作:

       SYS_MAILDIR_BASE = /var/mailbox/    127行

       SYS_MYSQL_USER = extmail            139+行

       SYS_MYSQL_PASS = extmail

       SYS_MYSQL_DB = extmail

       # chown -R vuser.vgroup /var/www/extsuite/extmail/cgi/  # 修改所属组和所有者

      # yum install extsuite-webman 

       # vim /var/www/extsuite/extman/webman.cf

    此处即为您在前文所设置的用户邮件的存放目录,可改作:

       12  SYS_MAILDIR_BASE = /var/mailbox

       21  SYS_CAPTCHA_ON = 0   //不需要认证码

       # mkdir /tmp/extman

       # chown vuser.vgroup /tmp/extman

    设置虚拟域和虚拟用户的配置文件

       # cp /var/www/extsuite/extman/docs/mysql_virtual_*.cf /etc/postfix/

       # chown -R vuser.vgroup /var/www/extsuite/extman/cgi/

    导入mysql数据库结构及初始化数据

      # cd /var/www/extsuite/extman/docs

      # mysql -u root -p <extmail.sql

      # mysql -u root -p <init.sql

    测试authlib认证:

        # /usr/sbin/authtest -s login postmaster@extmail.org extmail 

        Authentication succeeded.

       Authenticated: postmaster@extmail.org  (uid 1000, gid 1000)

        Home Directory: /var/mailbox/extmail.org/postmaster

               Maildir: /var/mailbox/extmail.org/postmaster/Maildir/

                 Quota: (none)

        Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0

        Cleartext Password: extmail

               Options: (none)

    这样表明ExtMan的正确安装,数据库也正确导入,courier-authlib能正确连接到mysql数据库 

    修改httpd.conf文件

       NameVirtualHost *:80

       <VirtualHost *:80>

       ServerName mail.lx.com

       DocumentRoot /var/www/extsuite/extmail/html/

       ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/

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

       ScriptAlias /extman/cgi/ /var/www/extsuite/extman/cgi/

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

      SuexecUserGroup vuser vgroup

       </VirtualHost>

     # service httpd restart

    13. 访问及测试 http://mail.lx.com/extman

    选择管理即可登入extman进行后台管理了。默认管理帐号为:root@extmail.org

    密码为:extmail*123*

    登录成功后创建虚拟域和虚拟用户

    使用telnet登录25和110端口进行测试

  • 相关阅读:
    #与javascript:void(0)的区别
    单选框、复选框、下拉列表
    数据类型后的“?”
    c#中日期的处理
    日期控件html
    javascript获取后台传来的json
    Hashtable语法简介
    Hashtable(哈希表)
    Dictionary 字典
    远程SQL Server连接不上
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/5996543.html
Copyright © 2011-2022 走看看