extmail安装脚本详解

    脚本在Linode CentOS 5.6 32位中通过测试,注意将hostname改成你本机名
    php和apache使用源码安装,版本:php-5.3.15.tar.gz,httpd-2.2.22.tar.gz,其他使用EMOS_1.5_i386.iso中rpm包。
    使用方法:

    wget //linuxeye.com/wp-content/uploads/extmail.zip
    unzip -qo extmail.zip
    cd extmail sh
    extmail_install.sh

    文章参考:http://wiki.extmail.org,本文没有安装邮件病毒检查和垃圾邮件过滤
    以下是脚本内容:

    #1. 安装完系统后,执行初始化脚本地址://linuxeye.com/wp-content/uploads/init.sh,开启iptables 25、110端口,设置hostname
    wget //linuxeye.com/wp-content/uploads/init.sh  #初始化脚本
    sh init.sh
    sed -i 's@COMMIT@-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT n-A INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT nCOMMIT@g' /etc/sysconfig/iptables
    service iptables restart
    if [ -z $(grep HOSTNAME  /etc/sysconfig/network) ];then echo 'HOSTNAME=mail.linuxeye.com' >> /etc/sysconfig/network; else  sed -i 's@HOSTNAME.*@HOSTNAME=mail.linuxeye.com@g' /etc/sysconfig/network; fi
    hostname mail.linuxeye.com
    source /etc/profile
     
    #2. 配置yun
    echo '# EMOS-Base.repo
    [EMOS-base]
    name=EMOS-Base
    baseurl=http://mirror.extmail.org/yum/emos/1.5/os/$basearch/
    gpgcheck=0
    priority=0
    protect=0
     
    [EMOS-update]
    name=EMOS-Updates
    baseurl=http://mirror.extmail.org/yum/emos/1.5/updates/$basearch/
    gpgcheck=0
    priority=0
    protect=0' > /etc/yum.repos.d/EMOS-Base.repo
    yum clean all
     
    #3. 源码安装apache、php,rpm安装mysql-server
    cd /root
    wget //linuxeye.com/wp-content/uploads/lamp.zip #lamp源码安装脚本,不用安装mysql
    unzip lamp.zip
    cd lamp
    yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel nss_ldap openldap openldap-devel  openldap-clients openldap-servers libxslt-devel libevent-devel ntp  libtool-ltdl bison libtool vim-enhanced gd gd-devel
    if [ -e "/root/lamp" ];then
    echo -e "e[0;34m start installe[0m"
    cd /root/lamp/apache
    else
    echo -e "e[1;31mPlease send lamp directory moved to /roote[0m"
    exit 1
    fi
    tar xzf pcre-8.31.tar.gz
    cd pcre-8.31
    ./configure
    make && make install
    cd ../
     
    useradd -M -s /sbin/nologin www
    tar xzf httpd-2.2.22.tar.gz
    cd httpd-2.2.22
    ./configure --prefix=/usr/local/apache --enable-so --enable-deflate=shared --enable-ssl=shared --enable-expires=shared  --enable-headers=shared --enable-rewrite=shared --enable-static-support  --with-included-apr --with-mpm=worker
    make && make install
    /bin/cp /usr/local/apache/bin/apachectl  /etc/init.d/httpd
    sed -i '2a # chkconfig: - 85 15' /etc/init.d/httpd
    sed -i '3a # description: Apache is a World Wide Web server. It is used to serve' /etc/init.d/httpd
    chmod 755 /etc/init.d/httpd
    chkconfig --add httpd
    chkconfig httpd on
    cd ..
    yum -y install mysql-server #rpm安装mysql
    service mysqld restart
    mysql -e "grant all privileges on *.* to root@'%' identified by 'admin' with grant option;"
    mysql -e "flush privileges;"
    mysql -e "delete from mysql.user where password='';"
    service mysqld restart
     
    #安装php
    cd /root/lamp/php
    tar xzf libiconv-1.14.tar.gz
    cd libiconv-1.14
    ./configure --prefix=/usr/local
    make && make install
     
    cd ../
    tar xzf libmcrypt-2.5.8.tar.gz
    cd libmcrypt-2.5.8
    ./configure
    make && make install
    /sbin/ldconfig
    cd libltdl/
    ./configure --enable-ltdl-install
    make && make install
    cd ../../
     
    tar xzf mhash-0.9.9.9.tar.gz
    cd mhash-0.9.9.9
    ./configure
    make && make install
    cd ../
    if [ -e "/lib64" ];then
    ln -s /usr/local/lib/libmcrypt.la /usr/lib64/libmcrypt.la
    ln -s /usr/local/lib/libmcrypt.so /usr/lib64/libmcrypt.so
    ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib64/libmcrypt.so.4
    ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib64/libmcrypt.so.4.4.8
    ln -s /usr/local/lib/libmhash.a /usr/lib64/libmhash.a
    ln -s /usr/local/lib/libmhash.la /usr/lib64/libmhash.la
    ln -s /usr/local/lib/libmhash.so /usr/lib64/libmhash.so
    ln -s /usr/local/lib/libmhash.so.2 /usr/lib64/libmhash.so.2
    ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib64/libmhash.so.2.0.1
    ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
    else
    ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
    ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
    ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
    ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
    ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
    ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
    ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
    ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
    ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
    ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
    fi
    echo '/usr/lib/mysql/' >> /etc/ld.so.conf
    ldconfig
    yum -y install mysql-devel #不然安装php找不到mysql头文件
    tar xzf mcrypt-2.6.8.tar.gz
    cd mcrypt-2.6.8
    /sbin/ldconfig
    ./configure
    make && make install
    cd ../
    tar xzf php-5.3.15.tar.gz
    cd php-5.3.15
    ./configure  --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql --with-mysqli --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-ftp --enable-zip --enable-soap --disable-debug
     
    make ZEND_EXTRA_LIBS='-liconv' && make install
    cp php.ini-production /usr/local/php/lib/php.ini
    cd ../
     
    tar xzf memcache-2.2.6.tgz
    cd memcache-2.2.6
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make && make install
    cd ../
     
    tar xjf eaccelerator-0.9.6.1.tar.bz2
    cd eaccelerator-0.9.6.1
    /usr/local/php/bin/phpize
    ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
    make && make install
    cd ../
     
    tar xzf PDO_MYSQL-1.0.2.tgz
    cd PDO_MYSQL-1.0.2
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
    make && make install
    cd ../
     
    tar xzf ImageMagick-6.6.7-10.tar.gz
    cd ImageMagick-6.6.7-10
    ./configure
    make && make install
    cd ../
     
    tar xzf imagick-2.3.0.tgz
    cd imagick-2.3.0
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make && make install
    cd ../
     
    #修改php.ini
    mkdir /tmp/eaccelerator
    sed -i 's@expose_php = On@expose_php = Off@g' /usr/local/php/lib/php.ini   #隐藏php版本信息
    sed -i '808a extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626/"' /usr/local/php/lib/php.ini
    sed -i '809a extension = "memcache.so"' /usr/local/php/lib/php.ini
    sed -i '810a extension = "pdo_mysql.so"' /usr/local/php/lib/php.ini
    sed -i '811a extension = "imagick.so"' /usr/local/php/lib/php.ini
    sed -i '134a output_buffering = On' /usr/local/php/lib/php.ini
    sed -i '847a cgi.fix_pathinfo=0' /usr/local/php/lib/php.ini
    sed -i 's@;date.timezone =@date.timezone = Asia/Shanghai@g' /usr/local/php/lib/php.ini
    echo '[eaccelerator]
    zend_extension="/usr/local/php/lib/php/extensions/no-debug-zts-20090626/eaccelerator.so"
    eaccelerator.shm_size="64"
    eaccelerator.cache_dir="/tmp/eaccelerator"
    eaccelerator.enable="1"
    eaccelerator.optimizer="1"
    eaccelerator.check_mtime="1"
    eaccelerator.debug="0"
    eaccelerator.filter=""
    eaccelerator.shm_max="0"
    eaccelerator.shm_ttl="0"
    eaccelerator.shm_prune_period="0"
    eaccelerator.shm_only="0"
    eaccelerator.compress="0"
    eaccelerator.compress_level="9"
    eaccelerator.keys = "disk_only"
    eaccelerator.sessions = "disk_only"
    eaccelerator.content = "disk_only"' >> /usr/local/php/lib/php.ini
     
    #修改apache配置文件
    if [ "$(hostname -i)" == "127.0.0.1" ];then
    echo "OK"
    else
    sed -i "s/127.0.0.1.*$/127.0.0.1       `hostname`  localhost.localdomain localhost/g" /etc/hosts
    fi
     
    sed -i 's/User daemon/User www/g' /usr/local/apache/conf/httpd.conf
    sed -i 's/Group daemon/Group www/g' /usr/local/apache/conf/httpd.conf
    sed -i 's/#ServerName www.example.com:80/ServerName 127.0.0.1:80/g' /usr/local/apache/conf/httpd.conf
    sed -i '288a AddType application/x-httpd-php .php .phtml' /usr/local/apache/conf/httpd.conf
    sed -i '289a AddType application/x-httpd-php-source .phps' /usr/local/apache/conf/httpd.conf
    sed -i 's@DirectoryIndex index.html@DirectoryIndex index.html index.php@g' /usr/local/apache/conf/httpd.conf
    cat >> /usr/local/apache/conf/httpd.conf <<EOF #隐藏apache版本信息
    ServerTokens ProductOnly
    ServerSignature Off
    EOF
     
    #3. 安装配置postfix
    yum -y install postfix  #安装前删除sendmail,初始化脚本中已经删除
    postconf -n > /etc/postfix/main.cf
     
    #编辑main.cf
    echo '# hostname
    mynetworks = 127.0.0.1
    myhostname = mail.linuxeye.com
    mydestination = $mynetworks $myhostname
     
    # banner
    mail_name = Postfix
    smtpd_banner = $myhostname ESMTP $mail_name
     
    # response immediately
    smtpd_error_sleep_time = 0s
     
    # Message and return code control
    message_size_limit = 15360000
    mailbox_size_limit = 1024000000
    show_user_unknown_table_name = no
    alias_maps = hash:/etc/aliases
     
    # Queue lifetime control
    bounce_queue_lifetime = 1d
    maximal_queue_lifetime = 1d' >> /etc/postfix/main.cf
     
    chkconfig postfix on  #postfix开机自启
     
    #4. 安装Courier-imap
    yum -y install courier-imap
    sed -i 's/^IMAPDSTART=.*/IMAPDSTART=NO/g' /usr/lib/courier-imap/etc/imapd
    sed -i 's/^IMAPDSSLSTART=.*/IMAPDSSLSTART=NO/g' /usr/lib/courier-imap/etc/imapd-ssl
    service courier-imap start
     
    #5. 安装配置courier-authlib
    yum -y install courier-authlib
    yum -y install courier-authlib-mysql
     
    #编辑 /etc/authlib/authmysqlrc
    cat > /etc/authlib/authmysqlrc << EOF
    MYSQL_SERVER            localhost
    MYSQL_USERNAME          extmail
    MYSQL_PASSWORD          extmail
    MYSQL_SOCKET            /var/lib/mysql/mysql.sock
    MYSQL_PORT              3306
    MYSQL_OPT               0
    MYSQL_DATABASE          extmail
    MYSQL_USER_TABLE        mailbox
    MYSQL_CRYPT_PWFIELD     password
    MYSQL_UID_FIELD         uidnumber
    MYSQL_GID_FIELD         gidnumber
    MYSQL_LOGIN_FIELD       username
    MYSQL_HOME_FIELD        homedir
    MYSQL_NAME_FIELD        name
    MYSQL_MAILDIR_FIELD     maildir
    MYSQL_QUOTA_FIELD       quota
    MYSQL_SELECT_CLAUSE     SELECT username,password,"",uidnumber,gidnumber,CONCAT('/home/domains/',homedir),CONCAT('/home/domains/',maildir),quota,name FROM mailbox WHERE username = '$(local_part)@$(domain)'
    EOF
     
    #修改authdaemonrc文件
    sed -i 's/authmodulelist=.*$/authmodulelist="authmysql"/g' /etc/authlib/authdaemonrc
    sed -i 's/authmodulelistorig=.*$/authmodulelistorig="authmysql"/g' /etc/authlib/authdaemonrc
     
    #修改authdaemon socket目录权限,如果该目录权限不正确修改,maildrop及postfix等将无法正确获取用户的信息及密码认证
    chmod 755 /var/spool/authdaemon/
    service courier-authlib start
     
    #6. 安装cyrus-sasl
    rpm -e cyrus-sasl --nodeps
    yum -y install cyrus-sasl
    cat >> /etc/postfix/main.cf << EOF
    # smtpd related config
    smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_non_fqdn_hostname,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unauth_destination,reject_unauth_pipelining,reject_invalid_hostname
     
    # SMTP sender login matching config
    smtpd_sender_restrictions = permit_mynetworks,reject_sender_login_mismatch,reject_authenticated_sender_login_mismatch,reject_unauthenticated_sender_login_mismatch
     
    smtpd_sender_login_maps = mysql:/etc/postfix/mysql_virtual_sender_maps.cf,mysql:/etc/postfix/mysql_virtual_alias_maps.cf
     
    # SMTP AUTH config here
    broken_sasl_auth_clients = yes
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_local_domain = $myhostname
    smtpd_sasl_security_options = noanonymous
    EOF
     
    cat > /usr/lib/sasl2/smtpd.conf << EOF
    pwcheck_method: authdaemond
    log_level: 3
    mech_list: PLAIN LOGIN
    authdaemond_path:/var/spool/authdaemon/socket
    EOF
     
    #7. 安装配置maildrop
    yum -y install maildrop
    #配置master.cf 为了使Postfix支持Maildrop,必须修改/etc/postfix/master.cf文件,flags前面有"两个空格"
    echo 'maildrop   unix        -       n        n        -        -        pipe
    flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}' >> /etc/postfix/master.cf
     
    #测试maildrop对authlib支持,必须出现Courier Authentication Library extension enabled。
    maildrop -v
     
    #8. exmail依赖关系解决和extman验证码图片不显示
    cd /root
    wget //linuxeye.com/wp-content/uploads/extmail.zip
    unzip -qo extmail.zip
    cd extmail
    #wget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.021.tar.gz
    tar xzf DBD-mysql-4.021.tar.gz
    cd DBD-mysql-4.021
    perl Makefile.PL
    make && make install
    cd ../
     
    #wget http://search.cpan.org/CPAN/authors/id/M/MH/MHARNISCH/Unix-Syslog-1.1.tar.gz
    tar xzf Unix-Syslog-1.1.tar.gz
    cd Unix-Syslog-1.1
    perl Makefile.PL
    make && make install
    cd ../
     
    #extman验证码图片不显示
    #wget http://packages.sw.be/perl-GD/perl-GD-2.43-1.el5.rf.i386.rpm
    rpm -ivh perl-GD-2.43-1.el5.rf.i386.rpm
     
    #9. 安装配置extmail、extman
    tar xzf extman-1.1.tar.gz
    tar xzf extmail-1.2.tar.gz
    mkdir -p /var/www/extsuite
    mv extmail-1.2 /var/www/extsuite/extmail
    cp /var/www/extsuite/extmail/webmail.cf.default /var/www/extsuite/extmail/webmail.cf
    sed -i 's@^SYS_MYSQL_USER.*@SYS_MYSQL_USER = extmail@g' /var/www/extsuite/extmail/webmail.cf
    sed -i 's@^SYS_MYSQL_PASS.*@SYS_MYSQL_PASS = extmail@g' /var/www/extsuite/extmail/webmail.cf
    #sed -i 's/^SYS_G_ABOOK_FILE_CHARSET.*/SYS_G_ABOOK_FILE_CHARSET = gb2312/g' /var/www/extsuite/extmail/webmail.cf
    #sed -i 's/^SYS_USER_LANG.*/SYS_USER_LANG = zh_CN/g' /var/www/extsuite/extmail/webmail.cf
     
    mv extman-1.1 /var/www/extsuite/extman
    cp /var/www/extsuite/extman/webman.cf.default /var/www/extsuite/extman/webman.cf
    sed -i 's@^SYS_MYSQL_USER.*@SYS_MYSQL_USER = extmail@g' /var/www/extsuite/extman/webman.cf
    sed -i 's@^SYS_MYSQL_PASS.*@SYS_MYSQL_PASS = extmail@g' /var/www/extsuite/extman/webman.cf
    #sed -i 's/^SYS_G_ABOOK_FILE_CHARSET.*/SYS_G_ABOOK_FILE_CHARSET = gb2312/g' /var/www/extsuite/extman/webman.cf
    #sed -i 's/^# SYS_LANG.*/SYS_LANG = zh_CN/g' /var/www/extsuite/extman/webman.cf
    cp /var/www/extsuite/extman/docs/mysql_virtua* /etc/postfix/   #虚拟域和虚拟用户的配置文件
    sed -i 's/TYPE=MyISAM//g' /var/www/extsuite/extman/docs/extmail.sql
    mysql -uroot -padmin < /var/www/extsuite/extman/docs/extmail.sql
    sed -i 's/extmail.org/linuxeye.com/g' /var/www/extsuite/extman/docs/init.sql
    mysql -uroot -padmin < /var/www/extsuite/extman/docs/init.sql
    mysql -uroot -padmin -e "grant all privileges on extmail.* to extmail@localhost identified by 'extmail' with grant option;"
    mysql -uroot -padmin -e "delete from mysql.user where password='';"
    mkdir /tmp/extman
    chown -R vuser:vgroup /tmp/extman
    chown -R vuser.vgroup /var/www
     
    cat >> /etc/postfix/main.cf << EOF
    # extmail config here
    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:
    EOF
     
    newaliases
    service postfix restart
     
    #10. 配置apache
    sed -i 's@/usr/local/apache/htdocs@/var/www@g' /usr/local/apache/conf/httpd.conf
    sed -i 's/User www/User vuser/g' /usr/local/apache/conf/httpd.conf
    sed -i 's/Group www/Group vgroup/g' /usr/local/apache/conf/httpd.conf
    echo 'Include conf/extra/httpd-vhosts.conf' >> /usr/local/apache/conf/httpd.conf
     
    cat > /usr/local/apache/conf/extra/httpd-vhosts.conf << EOF
    <VirtualHost *:80>
    ServerName mail.linuxeye.com
    DocumentRoot "/var/www/extsuite/extmail/html"
    ErrorLog "/usr/local/apache/logs/mail_error.log"
    CustomLog "/usr/local/apache/logs/mail_access.log" common
    ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
    <Directory /var/www/extsuite/extman/cgi>
    Options +ExecCGI
    AddHandler cgi-script .cgi
    </Directory>
     
    Alias /extmail /var/www/extsuite/extmail/html
    <Directory /var/www/extsuite/extmail/html>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
    ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi
    Alias /extman /var/www/extsuite/extman/html
    </VirtualHost>
    EOF
     
    chown -R vuser.vgroup /tmp/eaccelerator/
    service httpd restart
    • 本文由 发表于 2012-07-24
    • 转载请务必保留本文链接:https://linuxeye.com/151.html
    腾讯云COS上传、批量删除工具(Python) 脚本

    腾讯云COS上传、批量删除工具(Python)

    腾讯云对象存储COS是类似于阿里云OSS,相比OSS,COS提供每月免费额度:存储空间50G、外网访问流量10G(内网免费)、免费读请求100万次、写请求10万次。对网站备份来说不错,但是,腾讯云提供...
    Imagemagick升级脚本-OneinStack 脚本

    Imagemagick升级脚本-OneinStack

    5月3日,图像处理软件ImageMagick就被公布出一个严重的0day漏洞(CVE-2016-3714),攻击者通过此漏洞可执行任意命令,最终窃取重要信息取得服务器控制权。 详细信息参考:https...
    RabbitMQ启动脚本 脚本

    RabbitMQ启动脚本

    记录一个rabbitmq启动脚本,修改部分参数即可用。 vi /etc/init.d/rabbitmq-server #脚本内容,见图下,需修改参数 chmod +x /etc/init.d/rabb...
    匿名

    发表评论

    匿名网友