zoukankan      html  css  js  c++  java
  • 搭个邮件服务器

    yum install gcc-c++

    /*  pcre 需要 c++  */
    tar -zxvf pcre-7.9.tar.gz
    cd pcre-7.9
    ./configure --prefix=/usr/local/pcre-7.9 --libdir=/usr/local/lib/pcre --includedir=/usr/local/include/pcre --build=i686-pc-linux-gnu
    make
    make install
    vim /etc/ld.so.conf
     写入  /usr/local/lib/pcre
    然后运行ldconfig

    yum install mysql mysql-server mysql-devel db4-devel openssl gcc libxml2 libxml2-devel

    /* 不装的话postfix编译出错 */
    yum install pcre-devel

    /* 建用户 */
    groupadd -g 2001 postfix
    useradd -g postfix -u 1001 -s /sbin/nologin -M postfix
    groupadd -g 2002 postdrop
    useradd -g postdrop -u 2002 -s /bin/false -M postdrop

    /* 装postfix */
    tar -zxvf postfix-2.5.6.tar.gz
    cd postfix-2.5.6

    make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\" \
    -DHAS_PCRE -DHAS_MYSQL \
    -I/usr/include/ -I/usr/local/include -I/usr/include/mysql/' \
    AUXLIBS='-L/usr/local/lib -L/usr/lib/mysql -lmysqlclient -lpcre'

    make
    make install  (make install的提问全部回车默认)

    /* 启动mysql */
    service mysqld start

    /* 导入初始化extmail (可以改下密码)*/
    tar -zxvf extman-1\[1\]\[1\].0.0.tar.gz
    cd extman-1.0.0/docs/
    mysql -u root -p < extmail.sql
    mysql -u root -p < init.sql
    cp mysql_*.cf /etc/postfix/

    /* 装dovecot */
    tar -zxvf dovecot-1.1.14.tar.gz
    cd dovecot-1.1.14
    ./configure --prefix=/usr/local/dovecot --sysconfdir=/etc/dovecot --with-sql --with-sql-drivers --with-mysql --with-ssl=openssl
    make
    make install

    /* 配置dovecot */
    cd /etc/dovecot
    cp dovecot-example.conf dovecot.conf
    vi dovecot.conf

    base_dir=/var/run/dovecot
    protocols=imap imaps pop3 pop3s
    listen=*
    disable_plaintext_auth = no
    ssl_disable = yes
    mail_location = maildir:/var/vmail/%d/%n/Maildir
    pop3_uidl_format=%08Xu%08Xv

    auth default {
    ...
    mechanisms = plain login digest-md5 cram-md5
           
    # 去掉注释
    passdb sql {
              args = /etc/dovecot/dovecot-sql.conf
    }
    ...
    # 去掉注释
    userdb sql {
              args = /etc/dovecot/dovecot-sql.conf
    }
    ...
    socket listen {
        ...
        client {
          path = /var/spool/postfix/private/auth
          mode = 0660
          user = postfix
          group = postfix
        }
    }
    }
    # 注释掉
    #passdb pam {
        ...
    #}

    /* 配置dovecot-sql.conf(extmail.sql导入了数据) */
    cp dovecot-sql-example.conf dovecot-sql.conf
    vi dovecot-sql.conf

    driver = mysql
    connect = host=localhost dbname=extmail user=extmail password=extmail
    # MD5-CRYPT是与extmail兼容的密码保存方式
    default_pass_scheme = MD5-CRYPT

    # dovecot为SASL和POP3等服务提供密码验证的SQL语句
    password_query = SELECT username AS user, password AS password \
       FROM mailbox WHERE username = '%u' AND active = '1'

    # dovecot提供POP3/IMAP服务需要的SQL语句
    user_query = \
    SELECT maildir as home,1001 as uid ,2001 as gid \
    FROM mailbox WHERE username='%u' and active='1'

    /* 创建符号链接 */
    ln -s /usr/local/dovecot/sbin/dovecot /usr/bin/dovecot
    /* 建dovecot用户 */
    useradd -s /bin/false -d /dev/null dovecot

    /* 配置 postfix */
    mv /etc/aliases /etc/aliases.old
    ln -s /etc/postfix/aliases /etc/aliases
    /usr/bin/newaliases

    vim /etc/postfix/main.cf

    myhostname = mail.luilai.cn
    mydomain = luilai.cn
    myorigin = $mydomain
    mydestination = $myhostname localhost localhost.$mydomain
    mynetworks = 192.168.1.0/24 127.0.0.0/8
    inet_interfaces = all
    #注意这个,表示主机系统用户的邮件投递至用户目录下mbox文件(mailbox格式)
    home_mailbox = mbox

    sendmail_path = /usr/sbin/sendmail
    newaliases_path = /usr/bin/newaliases
    mailq_path = /usr/bin/mailq
    setgid_group = postdrop
    html_directory = no
    manpage_directory = /usr/local/man
    sample_directory = /etc/postfix

    #=====================Vritual Mailbox settings=========================
    virtual_mailbox_base = /var/vmail/
    virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
    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:1001
    virtual_gid_maps = static:2001
    virtual_transport = virtual

    #====================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_overquota_bounce = yes

    #====================SASL ESMTP Authenticat=================
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_type = dovecot
    #smtpd_sasl_path 注意这个是dovecot的sasl路径,与 dovecot.conf 里的对应
    smtpd_sasl_path = private/auth
    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

    readme_directory = no
    command_directory = /usr/sbin
    daemon_directory = /usr/libexec/postfix
    queue_directory = /var/spool/postfix
    mail_owner = postfix
    data_directory = /var/lib/postfix

    /* 加入启动 */
    vim /etc/rc.d/rc.local
    /etc/rc.d/init.d/mysqld start
    /usr/bin/newaliases
    /usr/local/dovecot/sbin/dovecot
    /usr/sbin/postfix start

    yum install libpng libxslt libxslt-devel freetype freetype-devel gd gd-devel libmcrypt libmcrypt-devel

    /* 安装apache */
    mkdir /var/www/webroot
    cd httpd-2.2.11
    ./configure --prefix=/usr/local/apache --enable-modules=so --enable-rewrite --enable-suexec --with-suexec-docroot=/var/www/ --with-suexec-caller=daemon
    make ; make install

    /* 看下是否正确安装了suexec */
    /usr/local/apache/bin/suexec -V

    /* 配置apache */
    vim /usr/local/apache/conf/httpd.conf

    ServerName http://www.example.com/
    ServerAdmin abinxm@gmail.com
    DocumentRoot "/var/www/webroot"
        #Deny from all
        allow from all
    <Directory "/var/www/webroot">
    DirectoryIndex index.html index.php index.htm
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

    /* 安装php */
    cd php-5.2.9
    ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/lib/mysql/ --enable-ftp --with-libxml-dir=/usr/lib/ --with-expat-dir=/usr/lib --with-xsl=/usr/lib/ --enable-xslt --with-gd=/usr/ --with-jpeg-dir=/usr/lib/ --with-zlib-dir=/usr/lib/ --with-png --with-freetype-dir=/usr/lib/ --enable-mbstring --with-mcrypt=/usr/lib/
    make ; make install

    cd /usr/local/apache/modules/
    chmod -R 755 .
    chcon -t texrel_shlib_t /usr/local/apache/modules/libphp5.so

    /* 防火墙设置 */
    vim /etc/sysconfig/iptables
    开 25 110 143 端口
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

    /etc/rc.d/init.d/iptables restart

    /* 安装phpmyadmin */
    unzip phpMyAdmin-3.1.3-all-languages.zip
    cd phpmyadmin
    cp config.sample.inc.php config.inc.php

    vim config.inc.php

    $cfg['blowfish_secret'] = 'liulaiabinxm';

    /* 改mysql密码 */
    mysqladmin -u root -p password '新密码'

    /* extmail 相关需要的包 */

    tar -zxvf Time-HiRes-1.9719.tar.gz
    cd Time-HiRes-1.9719
    perl Makefile.PL
    make
    make test
    make install

    tar -zxvf File-Tail-0.99.3.tar.gz
    cd File-Tail-0.99.3
    perl Makefile.PL
    make
    make test
    make install

    yum install libart_lgpl-devel
    yum install tcl-devel

    tar -zxvf rrdtool-1.2.30.tar.tar
    cd rrdtool-1.2.30
    ./configure --prefix=/usr/local/rrdtool
    make ; make install
    make site-perl-install

    tar -zxvf GD-2.41.tar.gz
    cd GD-2.41
    perl Makefile.PL
    make
    make test
    make install

    tar -zxvf libart_lgpl-2.3.20.tar.gz
    cd libart_lgpl-2.3.20
    ./configure
    make ; make install

    tar -zxvf Unix-Syslog-1.1.tar.gz
    cd Unix-Syslog-1.1
    perl Makefile.PL
    make
    make test
    make install

    /* 启动图形日志 */
    cp -r /var/www/extsuite/extman/addon/mailgraph_ext/ /usr/local/mailgraph_ext/
    ln -sv /usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/RRDs.pm /usr/lib/perl5/5.8.8
    ln -sv /usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/auto/RRDs/RRDs.so /usr/lib/perl5/5.8.8/i386-linux-thread-multi/

    /usr/local/mailgraph_ext/mailgraph-init start
    /usr/local/mailgraph_ext/qmonitor-init start

    /* 加入启动 */
    vim /etc/rc.d/rc.local

    /usr/local/mailgraph_ext/mailgraph-init start
    /usr/local/mailgraph_ext/qmonitor-init start

    mkdir /tmp/extman
    chown -R postfix.postfix /tmp/extman/

    cd /var/www
    chown -R postfix.postfix .

    /* 设置apache */
    vim /usr/local/apache/conf/httpd.conf

    NameVirtualHost *:80
    <VirtualHost *:80>
    #ServerName mail.example.com
    ServerName mail.luilai.cn
    DocumentRoot /var/www/webroot/

    ScriptAlias /extman/cgi /var/www/extman/cgi
    Alias /extman /var/www/extman/html

    ScriptAlias /extmail/cgi /var/www/extmail/cgi
    # dispatch.fcgi
    Alias /extmail /var/www/extmail/html

    Alias /phpmyadmin /var/www/webroot/phpmyadmin/
    SuexecUserGroup postfix postfix
    </VirtualHost>

    mkdir /var/vmail
    chown -R postfix.postfix /var/vmail/

    改webman.cf及webmail.cf
    配置路径位置 SYS_CONFIG  SYS_LANGDIR  SYS_TEMPLDIR
    SYS_MAILDIR_BASE = /var/vmail/ 同postfix位置一致

    vim /var/www/extman/webman.cf
    # 验证码
    #SYS_CAPTCHA_ON = 1
    SYS_CAPTCHA_ON = 0

    vim /var/www/extmail/webmail.cf

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

    之后加入maildrop来替换原有MDA~GOOGLE一下很多方式

    之后extmail就可以有过滤功能,自动回复,黑白名单等。

    maildrop有自己的语法结构,例如 xfilter "php -f a.php" 等来调用外部程序,写在.mailfilter文件中,控制收到邮件时调用某些程序,或者进行邮件的过滤,回复等等,当然MDA也有其他的替代方案

    服务器搭建过程中权限设置很重要,否则经常会有错误出现,经常出现一些问题是因为缺少某模块引起

    maildrop持久层访问要用到courier-authlib

  • 相关阅读:
    Java http方式提交短信到短信网关
    表单提交set集合问题
    java 追加文件
    readonly和const 二者的区别
    自定义控件的实现
    sql 分页常见做法
    数据库通用连接类
    log4Net 使用
    NHibernate从入门到精通——第一个NHibernate应用程序
    自己写了一个js,但是最终不能控制住最后后的提交,前面的还是比较完美,大家看到后,能帮我解决一下吗?
  • 原文地址:https://www.cnblogs.com/abinxm/p/1451189.html
Copyright © 2011-2022 走看看