日历

2017年十二月
« 9月    
 123
45678910
11121314151617
18192021222324
25262728293031

最近评论

    linux企业应用

    源码安装Postfix-2.6.5邮件服务器和源码安装dovecot-1.1.4

    一、 postfix的安装过程
        安装postfix之前,首先检查sendmail是否启动,因为sendmail模式是安装启动的:
    [root@myfreelinux pub]# chkconfig –list sendmail
    sendmail        0:off 1:off 2:on 3:on 4:on 5:on 6:off
    [root@myfreelinux pub]# service sendmail status
    sendmail (pid  2887) is running…
    [root@myfreelinux pub]# service sendmail stop
    Shutting down sm-client:                                   [  OK  ]
    Shutting down sendmail:                                    [  OK  ]
    [root@myfreelinux pub]# chkconfig –level 2345 sendmail off

    [root@myfreelinux pub]# chkconfig –list sendmail
    sendmail        0:off 1:off 2:off 3:off 4:off 5:off 6:off
        sendmail确认关闭,并且每次系统启动时不再启动该服务。下面,添加运行postfix的系统账号:
    [root@myfreelinux pub]# groupadd -g 1200 postdrop
    [root@myfreelinux pub]# groupadd -g 1000 postfix
    [root@myfreelinux pub]# useradd -M -u 1000 -g 1000 -G 1200 -s /sbin/nologin postfix
        postfix账号uid gid是1000,另外还属于postdrop组,该用户没有家目录,且不能登录。
    [root@myfreelinux pub]# tar zxf postfix-2.6.5.tar.gz
    [root@myfreelinux pub]# cd postfix-2.6.5     #在解压后的源文件中,有一个文件夹README_FILES,有很多的参考文件,如果需要,可以详细阅读。

        make makefiles的时候可以使用从网上搜到的信息(http://linux.chinaunix.net/techdoc/net/2008/01/18/976978.shtml),也可以使用这里提到的信息:
    [root@myfreelinux postfix-2.6.5]# make makefiles \
    > ‘CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql \   #指定相应的头文件位置
    > -DUSE_SASL_AUTH \
    > -DUSE_CYRUS_SASL -I/usr/include/sasl’ \
    > ‘AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm \  #指定额外的库函数位置
    > -L/usr/lib/sasl2 -lsasl2’
    出现错误:
    Install the appropriate db*-devel package first.
    See the RELEASE_NOTES file for more information.
    make: *** [Makefiles] Error 1
    make: *** [makefiles] Error 2
    解决方法是:
    [root@myfreelinux postfix-2.6.5]# yum -y install db4-devel
    [root@myfreelinux postfix-2.6.5]# make && make install #出现以下错误:
    make: *** [xsasl_cyrus_server.o] Error 1
    make: *** [update] Error 1

        根据错误提示yum install cyrus-sasl cyrus-sasl-devel软件包安装上之后,make && make install后成功。上面参数的说明:
        CCARGS参数:是C语言编译器提供额外的参数(C-language Compiler Arguments ),-I选项(字母i的大写)指出额外的头文件的存放目录;
        AUXLIBS参数:指出位于标准位置之外的额外/辅助的函数库(Auxiliaries Libraries),-lmysqlclient、-lz、-lm、-lsasl2中的”l“为字母L的小写;
    在安装过程中,提示用户设置一些参数,直接回车,使用默认值就行,直至完成安装。
        如果需要postfix支持TLS加密传输,配置参数可已使用下面的配置:
    [root@myfreelinux postfix-2.6.5]# make makefiles \
    > ‘CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql \
    > -DUSE_SASL_AUTH \
    > -DUSE_TLS \
    > -DUSE_CYRUS_SASL -I/usr/include/sasl’ \
    > ‘AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient  -lz  -lm  \
    > -L/usr/lib/sasl2  -lsasl2 \
    > -lssl -lcrypto ‘
    1.    Postfix的相关目录
        postfix安装完成后,邮件的队列,上面提到的incoming,active,deferred,hold,corrupt这五个队列在/var/spool/postfix/这个目录下[root@myfreelinux ~]# ls /var/spool/postfix
    active  corrupt  deferred  hold      maildrop  private  saved
    bounce  defer    flush     incoming  pid       public   trace

    而主要的邮件管理程序则在/usr/sbin目录下,以post开头的命令大多是postfix相关的命令
    [root@myfreelinux ~]# ls /usr/sbin |grep ^post
    postalias #构造、修改和查询别名表   
    postcat   #打印邮件队列文件的内容。后面简要显示的队列文件名,可以带一个-v的参数进行冗余显示。
    postconf  #显示和编辑main.cf配置文件,打印配置参数设置后的值或postfix的其他信息。-d 打印默认配置参数。-m 列出所有支持的查询表类型,不带参数则打印配置参数设置后的值。
    postdrop  #将邮件放回到maildrop/目录,由postfix重新进行投递操作
    postfix   #启动或停止postfix系统,或重新读取配置文件。也可以用于其他维护工作,包括检查系统配置,以及清空队列。
    postkick  #对特定postfix服务发出请求。此工具的作用,主要是给shell scripts提供一个能够与postfix沟通服务的管道。
    postlock  #锁定特定文件,确保能够独占访问。此工具的作用,主要是让shell scripts能使用兼容于postfix的锁定方式。
    postlog   #将指定的信息记录到系统日志文件中。这是支持shell scripts工具,使其能以类似于postfix的样式来记录信息到日志文件。
    postmap   #构造、修改或者查询查询表
    postmulti #在单台主机上运行管理多个postfix实例,例程。
    postqueue #让一般用户能够有限度的访问postfix队列。可能改变队列的访问方式需要有管理员特权才能进行,而这方面的访问能力由postsuper命令提供。postqueue -p 显示信件队列;postqueue -f 全部扫清队列
    postsuper #管理邮件队列,要求有root用户权限

    2.    Postfix的配置文件
        了解了以上信息后,接下来配置一下postfix的配置文件,首先要知道master主程序的配置文件是/etc/postfix/master.cf,postfix的配置文件是/etc/postfix/main.cf,可以使用上面提到的postconf作为辅助工具,postconf不带参数是显示main.cf配置文件的有效配置,加上-d参数是显示默认配置,-n则是显示非默认配置,可以使用postconf简化main.cf配置文件,只保留与默认配置不同的参数。那么我们可以这样:
    [root@myfreelinux postfix]# pwd
    /etc/postfix
    [root@myfreelinux postfix]# postconf -n >main2.cf
    [root@myfreelinux postfix]# mv main.cf main.cf.back
    [root@myfreelinux postfix]# mv main2.cf main.cf
        这样就简化了main.cf的配置文件了。

    3.    Postfix的日志文件
        Postfix系统的日志文件位于“/var/log/maillog”,此文件记录了Postfix服务器的运行状态信息。我们可以经常使用带“-f”选项的tail命令查看日志。如果日志太多了我们可发使用egrep命令进行过滤。egrep是grep的加强版,也可以这么理解:egrep=grep -e,'(a|b|c):’,表示a:或b:或c:。
    [root@myfreelinux postfix]# egrep ‘(reject|warning|error|fatal|panic):’ /var/log/maillog
        这是筛选postfix的日志信息,实际上可以只筛选出向error,fatal,panic等重要事件记录就行了。
    [root@myfreelinux postfix]# tail -f /var/log/maillog
        这个命令是动态显示postfix日志的后十行,即查看最新出现的日志,-f的作用就是动态的显示日志的最新信息。

    4.    postfix的启动控制
        postfix服务的控制是使用命令postfix,该命令的路径是/usr/sbin/postfix,后面接start,stop,reload,abort,flush,check,status等,可以启动,停止,重载,,忽略错误,刷新,检查,查看状态,命令很简单,看一个吧:
    [root@myfreelinux postfix]# postfix start  #启动服务。
    postfix/postfix-script: starting the Postfix mail system
        postfix服务搭建实例:
        搭建环境如下:
    1.邮件服务器IP地址:192.168.1.6 主机名:myfreelinux.com
    2.邮件域:@myfreelinux.com或mail.myfreelinux.com
    3.LAMP平台:使用已编译安装好的Apache、MySQL、PHP,对应的安装目录分别是:./usr/local/apache2、/usr/local/mysql、/usr/local/php5
    4. 使用配置好的DNS,步骤不写了,只写配置。
    5. 使用本地系统用户。

        1、首先看一下DNS的配置,这里只列举内容,不说原因了:
    [root@myfreelinux named]# pwd
    /var/named
    [root@myfreelinux named]# cat myfreelinux.com.zone
    $TTL 86400
    @ IN SOA myfreelinux.com. root.myfreelinux.com.(20100704 10M 3H 3D 1D)
    @ IN NS www.myfreelinux.com.
    @ IN NS feed.myfreelinux.com.
    @ IN MX 2 mail.myfreelinux.com.
    www IN A 192.168.1.6
    feed IN A 192.168.1.6
    mail IN A 192.168.1.6
    [root@myfreelinux named]# cat 192.168.1.arpa
    $TTL 86400
    @ IN SOA myfreelinux.com. root.myfreelinux.com.(20100704 20M 3H 12H 1D)
    @ IN NS www.myfreelinux.com.
    @ IN NS feed.myfreelinux.com.
    @ IN MX 2 mail.myfreelinux.com.

    6 IN PTR www.myfreelinux.com.
    6 IN PTR feed.myfreelinux.com.
    6 IN PTR mail.myfreelinux.com.
    [root@myfreelinux named]# cat /etc/named.conf
    options{
     listen-on port 53 {192.168.1.6;};
     directory “/var/named”;
     allow-query{192.168.1.0/24;192.168.16.0/24;};
     recursion yes;
    };

    zone “myfreelinux.com” IN{
     type master;
     file “myfreelinux.com.zone”;
     allow-transfer{192.168.16.2;};
     allow-update {none;};
    };

    zone “1.168.192.in-addr.arpa” IN{
     type master;
     file “192.168.1.arpa”;
    };

        2、编辑main.cf文件,调整Postfix的基本运行参数
    [root@myfreelinux postfix]# pwd
    /etc/postfix
    [root@myfreelinux postfix]# cat main.cf
    #此处是使用postconf -n简化的主配置文件的内容
    #共21行信息
    inet_interfaces=192.168.1.6,127.0.0.1   //设置监听的IP
    myhostname=mail.myfreelinux.com         //设置主机名
    mydomain=myfreelinux.com                //设置邮件域
    myorigin=$mydomain                      //设置外发邮件时发件人地址中的邮件域名
    mydestination=$mydomain,$myhostname     //设置可接收的邮件地址中的域名
    home_mailbox=Maildir/                   //设置邮件存储位置和格式
    [root@myfreelinux postfix]# postfix reload   //修改完main.cf后,重载一下配置文件
        3、添加邮件用户的帐号
    [root@myfreelinux postfix]# groupadd mailtest
    [root@myfreelinux postfix]# useradd -g mailtest -s /sbin/nologin userc
    [root@myfreelinux postfix]# useradd -g mailtest -s /sbin/nologin[root@myfreelinux postfix]# groupadd mailtest
    [root@myfreelinux postfix]# useradd -g mailtest -s /sbin/nologin userc
    [root@myfreelinux postfix]# useradd -g mailtest -s /sbin/nologin userd
    [root@myfreelinux postfix]# passwd userc
    [root@myfreelinux postfix]# passwd userd

        4、测试SMTP发送邮件
    [root@myfreelinux postfix]# telnet localhost 25
    Trying 127.0.0.1…
    Connected to localhost.localdomain (127.0.0.1).
    Escape character is ‘^]’.
    220 mail.myfreelinux.com ESMTP Postfix
    helo localhost                       //显示客户端地址
    250 mail.myfreelinux.com
    mail from:userc@myfreelinux.com      //告诉服务器发件人的地址
    250 2.1.0 Ok
    rcpt to:userd@myfreelinux.com        //告诉服务器收件人的地址
    250 2.1.5 Ok
    data                                 //告诉服务器要传送数据了
    354 End data with <CR><LF>.<CR><LF>
    subject :I love myfreelinux.com      //主题
    hello!
    welcome to my blog,and here you will learn some new knowledge!
    .                                    //点表示邮件内容结束
    250 2.0.0 Ok: queued as 3B32310DFFD
    quit                                 //退出
    221 2.0.0 Bye
    Connection closed by foreign host.
    [root@myfreelinux postfix]# passwd userc
             构建Dovecot服务器
        1、编译安装Dovecot软件包
       其实Red Hat5自带了Dovecot,这里进行源码编译安装一个吧。从下面这个地址可以下载到最新的源码包http://www.dovecot.org/releases/。安装的步骤很简单,如下:
    [root@myfreelinux pub]# useradd -M -s /sbin/nologin dovecot
    [root@myfreelinux pub]# pwd
    /var/ftp/pub
    [root@myfreelinux pub]# ls
    dovecot-1.1.4.tar.gz  postfix-2.6.5  postfix-2.6.5.tar.gz
    [root@myfreelinux pub]# tar zxf dovecot-1.1.4.tar.gz
    [root@myfreelinux pub]# cd dovecot-1.1.4

        配置dovecot编译需要的模块,–sysconfdir=/etc的作用是将dovecot的模板配置文件放到/etc目录下,如果没有这个选项,将会安装到/usr/local/etc这个目录下。–with-mysql是支持mysql数据库
    [root@myfreelinux dovecot-1.1.4]# CPPFLAGS=”-I/opt/openssl/include -I/usr/local/include” LDFLAGS=”-L/opt/openssl/lib -ldl” ./configure –sysconfdir=/etc –with-ssl=openssl –with-mysql

    configure: error: Can’t build with OpenSSL: libssl not found
    configure: error: Can’t build with OpenSSL: libssl not found
    解决方法是:[root@myfreelinux dovecot-1.1.4]# yum -y install openssl-devel
    [root@myfreelinux dovecot-1.1.4]# make && make install
    [root@myfreelinux etc]# ls dovecot*  #dovecot安装后自带的一些配置文件的模板:
    dovecot-db-example.conf  dovecot-dict-sql-example.conf  dovecot-example.conf  dovecot-ldap-example.conf  dovecot-sql-example.conf

    安装之后Dovecot安装位置在 /usr/local/sbin/dovecot,安装完成后的结果如下:
    [root@myfreelinux dovecot-1.1.4]# find / -name dovecot
    /var/ftp/pub/dovecot-1.1.4/src/master/dovecot
    /var/run/dovecot
    /usr/share/logwatch/scripts/services/dovecot
    /usr/local/var/lib/dovecot
    /usr/local/sbin/dovecot
    /usr/local/share/doc/dovecot
    /usr/local/lib/dovecot
    /usr/local/libexec/dovecot

        2、创建并编辑dovecot的配置文件
    [root@myfreelinux etc]# cp /etc/dovecot-example.conf /etc/dovecot.conf
        编辑完后的内容如下:
    [root@myfreelinux etc]# egrep -v “^$|^[ ]*#” dovecot.conf
    protocols = imap imaps pop3 #指定支持的邮局协议,还可以添加pop3s和imaps,但是需要添加CA证书相关设置
    disable_plaintext_auth = no #允许明文密码认证是不安全的,但在未启用加密认证前,需要用到明文密码
    ssl_disable = yes #禁用SSL机制,pop3s使用995端口提供服务,imaps使用993端口提供服务
       mail_location = maildir:~/Maildir #邮件存储格式及位置
    protocol imap {
    }
     
    protocol pop3 {
    }
    protocol lda {
      postmaster_address = postmaster@example.com
    }
    auth default {
      mechanisms = plain
      passdb pam {
      }
      userdb passwd {
      }
      user = root
    }
    dict {
    }
    plugin {
    }

        创建PAM认证文件
    [root@myfreelinux etc]# cat /etc/pam.d/dovecot
    auth required pam_nologin.so
    auth include  system-auth
    account include  system-auth
    session include  system-auth
    auth表示登录身份认证,account表示帐号属性认证,session表示登陆中的会话认证(打开文件、挂载设备等资源);required 表示此行记录中的认证必须通过,否则即认为认证失败;include 表示包含其他文件中的认证配置(system-auth对应为/etc/pam.d/system-auth文件)

        3、启动Dovecot服务,并查看其监听的TCP端口(110、143)
    [root@myfreelinux log]# /usr/local/sbin/dovecot -c /etc/dovecot.conf
    Warning: Last died with error (see error log for more information): Auth process died too early – shutting down#哈哈,启动错误
    查看一下maillog:
    [root@myfreelinux log]# tail -3 /var/log/maillog
    Jul  5 11:11:03 myfreelinux dovecot: Dovecot v1.1.4 starting up
    Jul  5 11:11:03 myfreelinux dovecot: Fatal: auth(default): Unknown passdb driver ‘pam’ (typo, or Dovecot was built without support for it? Check with dovecot –build-options)
    Jul  5 11:11:03 myfreelinux dovecot: Fatal: Auth process died too early – shutting down
        注意,提示’pam’,以pam为切入点,安装pam-devel,但是一定要在configure之前安装,大家可以测试一下。我这里安装的比较乱了,这次就做到这样了,以后有机会再调整安装次序。
        再启动一次,没有错误就好,嘿嘿。
    [root@myfreelinux ~]# /usr/local/sbin/dovecot -c /etc/dovecot.conf
    [root@myfreelinux ~]# netstat -atlunp | grep dove
    tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      3241/dovecot       
    tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN      3241/dovecot

        dovecot服务的启动程序位于“/usr/local/sbin”目录中,使用-c选项可以指定所使用的配置文件的位置,如果使用默认配置文件,则直接执行“dovecot”命令即可
    [root@myfreelinux ~]# dovecot  – #后面可以接下面这些参数。
    Usage: dovecot [-F] [-c <config file>] [-p] [-n] [-a]
           [–version] [–build-options] [–exec-mail <protocol> [<args>]]

        4、测试POP3接收邮件

    [root@mail ~]# telnet localhost 110
    Trying 127.0.0.1…
    Connected to localhost.localdomain (127.0.0.1).
    Escape character is ‘^]’.
    +OK Dovecot ready.
    user userd  //使用邮件用户“userd”登录
    +OK
    pass userd  //输入userd的密码userd
    +OK Logged in.
    List    //查看邮件列表
    +OK 1 messages:
    1 485
    .
    retr 1   //收取并查看第一封邮件内容,一下内容就不显示了
    quit
    +OK Logging out.
    Connection closed by foreign host.

    可参考一下两篇文章:
    http://sgh211314.blog.51cto.com/734383/287672
    http://www.hostloc.com/thread-22112-1-1.html

    评论已关闭。