Learning together

Learning together with open source fans. QQ群:8021887


  • 网站首页

  • 站内留言

  • 关于本站

  • 我的相册

  • 联系羽飞

  • 内容订阅
  • 第十章:Email服务全攻略

    作者: 羽飞 | 发布时间: 星期一, 02/08/2010 - 13:41 |

    内容简介
    电子邮件服务的概述
    postfix邮件服务的安装
    postfix邮件服务的配置.别名、虚拟别名域、访问控制、SSL、SMTP认证
    POP和IMAP邮件服务的实现
    案例详解.Extmail案例

    电子邮件系统的简介
    对于一个完整的电子邮件系统而言,它主要由以下三部分构件组成。
    1.用户代理:就是用户与电子邮件系统的接口,如Outlook和Foxmail
    2.邮件服务器:SMTP服务器+POP3服务器或IMAP4服务器
    3.电子邮件使用的协议
    SMTP协议:用来发送或中转发出的电子邮件
    POP3协议:从服务器上把邮件存储到本地主机即自己的计算机上
    IMAP4协议:用于从本地服务器上访问电子邮件

    (图1)

    1.png

    1、 MUA — Mail User Agent, 邮件用户代理,帮助用户读写邮件;
    2、 MTA — Mail Transport Agent, 邮件传输代理,负责把邮件由一个服务器传到另一个服务器;
    3、 MDA — Mail Delivery Agent, 邮件投递代理,把邮件放到用户的邮箱里。

    电子邮件服务的工作原理 (图2)

    2.png

    E-mail的传输过程如下。


    用户在各自的POP服务器注册登记,并取得一个POP信箱,获得POP和SMTP服务器的地址信息。假设两个服务器的域名分别为boobooke.com和sina.com,注册用户分别为tom和jack,E-mail地址分别为jack@boobooke.com和tom@sina.com。
    ② 当boobooke.com服务器上的用户jack向tom@sina.com发送E-mail时,E-mail首先从客户端被发送至boobooke.com的SMTP服务器。
    ③ boobooke.com的SMTP服务器根据目的E-mail地址查询sina.com的SMTP服务器,并转发该E-mail。
    ④ sina.com的SMTP服务器收到转发的E-mail,并保存。
    ⑤ sina.com的chen用户利用客户端登录至sina.com的POP服务器,从其信箱中下载并浏览E-mail。

    主流电子邮件服务器软件
    在Linux平台中,有许多邮件服务器可供选择,但目前使用较多的是Sendmail服务器、 Postfix服务器和Qmail服务器。
    Sendmail是一个很优秀的邮件服务软件。几乎所有Linux的缺省配置中都内置了这个软件,只需要设置好操作系统,它就能立即运转起来。
    Postfix是一个由IBM资助下由Wietse?Venema?负责开发的一个自由软件工程产物,它的目的就是为用户提供除Sendmail之外的邮件服务器选择。
    Qmail是有Dan?Bernstein开发的可以自由下载邮件服务器软件,其第一个beta版本0.70.7发布于1996年1月24日。

    postfix邮件服务的安装
    Red Hat Enterprise Linux 提供了sendmail和postfix两种STMP邮件服务软件,让用户可以随意地选择其中一种!不过,默认情况下安装程序已将sendmail安装到系统中了,如果要使用postfix,就必须先将sendmail服务停止,然后再安装postfix服务软件。具体操作步骤如下:

    ① 检查sendmail服务是否已启动
    netstat -nutlp | grep :25
    ② 关闭sendmail服务及开机时自启动,也可以卸载
    /etc/rc.d/init.d/sendmail stop
    chkconfig sendmail off
    ③ 安装postfix服务
    rpm -ivh /mnt/Server/postfix-*.i386.rpm

    postfix服务的基本配置
    主配置文件–/etc/postfix/main.cf
    运行参数配置文件–/etc/postfix/master.cf
    访问控制文件–/etc/postfix/access
    别名数据库文件–/etc/aliases
    虚拟别名域库文件–/etc/postfix/virtual

    1.设置运行postfix服务的邮件主机的主机名、域名
    myhostname = mail.boobooke.com
    mydomain = boobooke.com
    2.设置由本机寄出的邮件所使用的域名或主机名称
    myorigin = $mydomain
    3.设置postfix服务监听的网络接口
    inet_interfaces = all
    4.设置可接收邮件的主机名称或域名
    mydestination = $mydomain, $myhostname
    5.设置可转发(Relay)哪些网络的邮件
    mynetworks = 192.168.1.0/24
    6.设置可转发哪些网域的邮件
    relay_domains = boobooke.com

    POP和IMAP邮件服务的实现
    dovecot服务的实现
    cyrus-imapd服务的实现(EXTMAIL)

    POP和IMAP邮件服务的实现
    postfix服务只是一个MTA(邮件传输代理),它只提供SMTP服务,也就是只提供邮件的转发及本地的分发功能。要实现邮件的异地接收,还必须安装POP或IMAP服务。通常情况下,都是将STMP服务和POP或IMAP服务安装在同一台主机上,那么这台主机也就称为电子邮件服务器。Red
    Hat Enterprise Linux 5中,有以下两个软件可以同时提供POP和IMAP服务:dovecot和cyrus-imapd。
    dovecot服务的实现
    1.dovecot服务的安装
    Red Hat Enterprise Linux安装程序默认没有安装dovecot服务,可使用下面的命令检查系统是否已经安装了dovecot服务:
    rpm -q dovecot
    如果系统还没有安装dovecot服务,将Red Hat Enterprise Linux 5第2张安装光盘放入光驱,加载光驱后在光盘的Server目录下找到dovecot服
    务的RPM安装包文件dovecot-*.i386.rpm和相关程序,然后使用下面的命令安装dovecot服务和相关程序:
    rpm -ivh /mnt/Server/perl-DBI-*.rpm
    rpm -ivh /mnt/Server/mysql-*.rpm
    rpm -ivh /mnt/Server/dovecot-*.rpm

    2.dovecot服务的基本配置
    dovecot服务的配置文件是/etc/dovecot.conf。要启用最基本的dovecot服务,只需要修改该配置文件中的以下内容:
    protocols = imap imaps pop3 pop3s
    3.启动dovecot服务并设置为自启动
    /etc/rc.d/init.d/dovecot start
    chkconfig –level 345 dovecot on

    cyrus-imapd服务的实现
    cyrus-imapd服务的基本配置
    /etc/sysconfig/cyrus-imapd:是用于启动cyrus-imapd服务的配置文件;
    /etc/cyrus.conf:是cyrus-imapd服务的主要配置文件,其中包含该服务中各个组件(imap、pop3、sieve和nntp等)的设置参数;
    /etc/imapd.conf:是cyrus-imapd服务中的imap服务的配置文件。

    Web方式收发邮件
    虽然postfix没有直接提供Web邮件服务功能,但是通常可通过将它与Apache以及第三方的Webmail软件(如Extmail、squirrelmail、openwebmail等)集成在一起,提供Web邮件服务。

    用户别名的配置
    ① 打开postfix主配置文件/etc/postfix/main.cf,应确认文件中包含以下两条默认语句:
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases

    ② 编辑配置文件/etc/aliases,进行如下定义:
    class1: st98001,st98002,st98003,st98004
    class1: :include: /etc/mail/st98
    tom: zhangsan
    boss: lisi,lisi@163.com

    ③ 在修改配置文件main.cf和aliases后,要使更改立即生效,应分别执行/usr/sbin目录下以下的两条命令:
    postalias /etc/aliases
    postfix reload

    虚拟别名域的配置
    ① 编辑postfix主配置文件/etc/postfix/main.cf,进行如下定义:
    virtual_alias_domains = bbk.cn,example.com
    virtual_alias_maps = hash:/etc/postfix/virtual

    ② 编辑配置文件/etc/postfix/virtual,进行如下定义:
    @bbk.cn @boobooke.com
    admin@example.com tom
    st98@example.com st98001,st098002
    lisi@example.com jack,jack@163.com

    ③ 在修改配置文件main.cf和virtual后,要使更改立即生效,应分别执行/usr/sbin目录下以下的两条命令:
    postmap /etc/postfix/virtual
    postfix reload

    访问控制
    ① 编辑postfix主配置文件/etc/postfix/main.cf,进行如下定义:
    smtpd_client_restrictions = check_client_access hash:/etc/postfix/access
    ② 编辑配置文件/etc/postfix/access,进行如下定义:
    127.0.0.1 OK
    192.168.1.0/24 OK
    192.168.1.5 REJECT
    192.168.1.6 DISCARD
    91ops.com RELAY

    ③ 在修改配置文件main.cf和access后,要使更改立即生效,应分别执行/usr/sbin目录下以下的两条命令:
    postmap /etc/postfix/access
    postfix reload

    SSL实现
    ① 创建密钥
    make -C /etc/pki/tls/certs dovecot.pem
    ② 编辑配置文件/etc/dovecot.conf,开启POP3S并取消如下两行注释:
    ssl_cert_file = /etc/pki/tls/certs/dovecot.pem
    ssl_key_file = /etc/pki/tls/certs/dovecot.pem
    ssl_disable = no

    ③ 在修改配置文件dovecot后,要使更改立即生效,应执行如下命令:
    service dovecot restat
    netstat -nutl |grep LINTEN

    SMTP认证的配置
    Cyrus SASL是Cyrus Simple Authentication and Security
    Layer的简写,是为基于连接协议提供辅助认证支持的一种方法。使用SASL认证库时,应用层协议通过插入相关的认证命令来获取服务器的访问授权,同时也可以协商协议交互时的增强保护措施。当使用协商的安全措施时,一个安全协议层会被插入到应用协议层与连接层之间。它最大的功能是为应用程序提供了认证函数库。应用程序可以通过函数库所提供的功能定义认证方式,并让SASL通过与邮件服务器主机的沟通从而提供认证的功能。
    1.Cyrus-SASL认证包的安装
    默认情况下,Red Hat Enterprise Linux安装程序会将Cyrus-SASL认证包安装上,可使用下面的命令检查系统是否已经安装了Cyrus-SASL认证包或查看已经安装了何种版本:
    rpm -qa | grep sasl
    如果系统还没有安装Cyrus-SASL认证包,就安装cyrus-sasl-*.rpm包文件,可使用下面的命令:
    rpm -ivh /mnt/Server/cyrus-sasl-*.rpm
    2.Cyrus-SASL V2的密码验证机制
    默认情况下,Cyrus-SASL V2版使用saslauthd这个守护进程进行密码认证,而密码认证的方法有多种,使用下面的命令可查看当前系统中的Cyrus-SASL V2所支持的密码验证机制:
    saslauthd -v
    当前可使用的密码验证方法有getwent、kerberos5、pam、rimap、shadow和ldap。
    为简单起见,这里准备采用shadow验证方法,也就是直接用/etc/shadow文件中的用户账户及密码进行验证,因此,在配置文件/etc/sysconfig/saslauthd中,修改当前系统所采用的密码验证机制为shadow,即:
    MECH=shadow
    3.测试Cyrus-SASL V2的认证功能
    由于Cyrus-SASL V2版默认使用saslauthd这个守护进程进行密码认证,因此,需要使用下面的命令来查看saslauthd进程是否已经运行:
    ps aux | grep saslauthd
    如果没有发现saslauthd进程,则可用下面的命令启动该进程并设置它开机自启动:
    /etc/init.d/saslauthd start
    chkconfig saslauthd on
    然后,可用下面的命令测试saslauthd进程的认证功能:
    /usr/sbin/testsaslauthd -u test -p ’123456′

    4.设置postfix启用smtp认证
    main.cf文件中有关smtp认证的设置部分
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_local_domain = ”
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
    broken_sasl_auth_clients=yes
    smtpd_client_restrictions = permit_sasl_authenticated
    smtpd_sasl_security_options = noanonymous

    5.测试postfix是否启用了smtp认证
    采用telnet命令连接到postfix服务器端口25来进行测试
    EHLO

    与POSTFIX有关的命令

    生成数据库
    postmap /etc/postfix/access
    postalise /etc/postfix/alisase
    检查 postfix 相关的档案、权限:postfix check
    查看 postfix 的设定内容:postconf -n
    重新读入设定档:postfix reload
    显示信件列表: postqueue -p
    显示信件內容: postcat -q Queue_ID
    清除信件: postqueue -f (全部) postqueue -s 主机名称(个别对象)

    一些有关的日志
    系统日志:tail -f /var/log/messages
    邮件日志:tail -f /var/log/maillog
    maildrop相关:tail -f /var/log/maildrop.log
    apache相关:
    tail -f /usr/local/httpd/logs/error_log
    tail -f /usr/local/httpd/logs/suexec_log
    mysql相关: tail -f /usr/local/mysql/data/linux.linux.com.err

    ★★★★★★★★★★★★★★★★★视频观看地址★★★★★★★★★★★★★★★★★★

    http://www.boobooke.com/v/bbk3776
    http://www.boobooke.com/v/bbk3777
    http://www.boobooke.com/v/bbk3778
    http://www.boobooke.com/v/bbk3779
    http://www.boobooke.com/v/bbk3780
    http://www.boobooke.com/v/bbk3781

    相关文章

    1. untitled Said,

      CYRUS-SASL这种东西可以抛弃了。我现在自己搞了个,直接POSTFIX+dovecot+mysql,直接用DOVECOT来LDA和SASL,很方便,而且DOVECOT的SASL自带CACHE功能。CYRUS还要借助MEMCACHED之类。
      POSTFIX+CYRUS-IMAP+CYRUS-SASL+COURIER-AUTHLIB+MEMCACHED+MYSQL+POSTDROP。不是一般麻烦,再加上一些反垃圾组件,太没效率了

      [回复]

    发表评论