登录站点

用户名

密码

注册

兴趣联盟 - Linux

  • lvzhong

    我的postfix学习笔记实验环境RHEL5.1(多多指教)

    lvzhong 2009-08-30 16:29
    postfix服务

    电子邮件系统
    对于一个完整的电子邮件系统而言,它主要由以
    下三部分构件组成。
    1.用户代理
    2.邮件服务器
    3.电子邮件使用的协议
    SMTP协议
    POP3协议
    IMAP4协议
    在Linux平台中,有许多邮件服务器可供选择,但目前使用较多
    的是Sendmail服务器、 Postfix服务器和Qmail服务器。
     Sendmail是一个很优秀的邮件服务软件。几乎所有Linux的缺
    省配置中都内置了这个软件,只需要设置好操作系统,它就能立
    即运转起来。
     Postfix是一个由IBM资助下由Wietse?Venema?负责开发的一个
    自由软件工程产物,它的目的就是为用户提供除Sendmail之外的
    邮件服务器选择。
     Qmail是有Dan?Bernstein开发的可以自由下载邮件服务器软
    件,其第一个beta版本0.70.7发布于1996年1月24日,当前版本是
    2.3.3-2。
     
    配置Postfix服务:
    一.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
     killall -9 sendmail
     ③ 安装postfix服务
     将Red Hat Enterprise Linux 5的第3张安装盘放入光驱,加载光驱后在光盘的
    Server目录下找到postfix的RPM安装包文件postfix-2.3.3-2.i386.rpm,然后使用
    下面的命令安装:
     rpm -ivh /mnt/Server/postfix-2.3.3-2.i386.rpm
    二.postfix服务的基本配置
    vim /etc/postfix/main.cf
    1.设置运行postfix服务的邮件主机的主机名、域名
    myhostname=mail.test.com      #69   去除前面的#号
    mydomain=test.com                #77(mydomain参数指向根域)   去除前面的#号
    2.设置由本机寄出的邮件所使用的域名或主机名称
    myorigin = $mydomain (如果你的邮件服务器有ip和直接域名ip一样,就可以使用$mydomin,如果不一样最好使用$myhostname )
    3.设置postfix服务监听的网络接口
    inet_interfaces = all (Postfix默认只监听本地地址,如果要与外界通信,就需要监听网卡的所有IP) #107
    4.设置可接收邮件的主机名称或域名
    mydestination = $mydomain, $myhostname     #155
    5.设置可转发(Relay)哪些网络的邮件
    mynetworks = 192.168.16.0/24     #255
    6.设置可转发哪些网域的邮件
    relay_domains = gdvcp.net #287
    保存退出
    2.虚拟别名域的配置:
    ① 编辑postfix主配置文件/etc/postfix/main.cf,进行如下定义:
    virtual_alias_domains = dzxx.cn,example.com
    virtual_alias_maps = hash:/etc/postfix/virtual
    ② 编辑配置文件/etc/postfix/virtual,进行如下定义:
    @dzxx.cn  @gdvcp.net
    admin@example.com  lbt
    st0321@example.com  st0321001,st0321002
    daliu@example.com  lbt,liu6812@163.com
    ③ 在修改配置文件main.cf和virtual后,要使更改立即生效,应分别执行/usr/sbin目录下以下的两条命令:
    postmap /etc/postfix/virtual
    postfix reload
    用户别名的配置的另一种方法:
    此外,要使它能在单位内部网络中更好地
    转发邮件,还必须进行DNS设置。
    rhel5.gdvcp.net.  IN   A  192.168.16.177
    mail.gdvcp.net.  IN CNAME  rhel5.gdvcp.net.
    gdvcp.net.      IN MX  10  mail.gdvcp.net
    ① 打开postfix主配置文件/etc/postfix/main.cf,应确认文件中包含以下两条默认语句:
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    ② 编辑配置文件/etc/aliases,进行如下定义:
    st0322:  st0322001,st0322002,st0322003,st0322004
    st0323:  :include: /etc/mail/st0323
    jcz01:  jczliuming
    lm01:  jczliuming,liuming86@163.com
    ③ 在修改配置文件main.cf和aliases后,要使更改立即生效,应分别执行/usr/sbin目录下以下的两条命令:
    postalias /etc/aliases         
    postfix reload
    三.SMTP认证的配置
    Cyrus SASL是Cyrus Simple Authentication and Security Layer的简写,它最
    大的功能是为应用程序提供了认证函数库。应用程序可以通过函数库所提供的功
    能定义认证方式,并让SASL通过与邮件服务器主机的沟通从而提供认证的功能。
    1.Cyrus-SASL认证包的安装
     默认情况下,Red Hat Enterprise Linux安装程序会将Cyrus-SASL认证包,
    可使用下面的命令检查系统是否已经安装了Cyrus-SASL认证包或查看已经安装
    了何种版本:
     rpm -qa | grep sasl
     如果系统还没有安装Cyrus-SASL认证包,应将Red Hat Enterprise Linux 5第
    1、2和3张安装光盘分别放入光驱,加载光驱后在光盘的Server目录下找到与
    Cyrus-SASL认证包相关的RPM包文件,然后分别使用rpm -ivh命令安装。例
    如,要安装第1张光盘上的cyrus-sasl-2.1.22-4.i386.rpm包文件,可使用下面的
    命令:
     rpm -ivh /mnt/Server/cyrus-sasl-2.1.22-4.i386.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 lbt –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来进行测试
    telnet mail.test.com 25
    四.postfix的访问控制
    vim /etc/postfix/access
    重点是379-386行的内容(意思是把smtpd_client_restrictions = check_client_access hash:/etc/postfix/access这句加
    到/etc/postfix/main.cf中的最后面)
    禁止某个ip在此行下面添加:ip地址  REJECT
    修改了access后,需要使用这个命令更新数据库
    postmap /etc/postfix/access
    然后重新启动postfix

    五.启动和停止postfix服务
    1.启动postfix服务
    /etc/init.d/postfix start
    2.停止postfix服务
    /etc/init.d/postfix stop
    3.重新启动postfix服务
    /etc/init.d/postfix restart
    4.重新载入postfix主配置文件
    /etc/init.d/postfix reload
    5.自动启动postfix服务
           如果需要让postfix服务随系统启动而自动加载,可以执行“ntsysv”
    命令启动服务配置程序,找到“postfix”服务,然后在其前面加上“*” 星
    号,确定即可。
    六.POP和IMAP邮件服务的实现:
    postfix服务只是一个MTA(邮件传输代理),它只提供
    SMTP服务,也就是只提供邮件的转发及本地的分发功能。
    要实现邮件的异地接收,还必须安装POP或IMAP服务。通
    常情况下,都是将STMP服务和POP或IMAP服务安装在同一
    台主机上,那么这台主机也就称为电子邮件服务器。Red
    Hat Enterprise Linux 5中,有以下两个软件可以同时提供
    POP和IMAP服务:dovecot和cyrus-imapd。
    (1)dovecot服务的实现:
    1.dovecot服务的安装
       Red Hat Enterprise Linux安装程序默认没有安装dovecot服务,可使
    用下面的命令检查系统是否已经安装了dovecot服务:
    #rpm -q dovecot
       如果系统还没有安装dovecot服务,将Red Hat Enterprise Linux 5第2
    张安装光盘放入光驱,加载光驱后在光盘的Server目录下找到dovecot服
    务的RPM安装包文件dovecot-1.0-1.2.rc15.el5.i386.rpm和相关程序,然
    后使用下面的命令安装dovecot服务和相关程序:
    rpm -ivh /mnt/Server/perl-DBI-1.52-1.fc6.i386.rpm
    rpm -ivh /mnt/Server/mysql-5.0.22-2.1.i386.rpm
    rpm -ivh /mnt/Server/dovecot-1.0-1.2.rc15.el5.i386.rpm
    2.dovecot服务的基本配置
     dovecot服务的配置文件是/etc/dovecot.conf。要
    启用最基本的dovecot服务,只需要修改该配置文件
    中的以下内容:
    protocols =pop3 pop3sprotocol pop3 {     listen = *:10100  }
    3.启动dovecot服务并设置为自启动
     /etc/rc.d/init.d/dovecot start
        chkconfig --level 345 dovecot on
    (2)cyrus-imapd服务的实现 :
    1.cyrus-imapd服务的安装
       Red Hat Enterprise Linux安装程序默认没有安装cyrus-imapd服务,可使用下
    面的命令检查系统是否已经安装了cyrus-imapd服务:
    #rpm -qa | grep cyrus-imapd
       系统当前还没有安装cyrus-imapd服务,将Red Hat Enterprise Linux 5第2、3
    张安装光盘放入光驱,加载光驱后在光盘的Server目录下可找到以下与cyrus-
    imapd服务相关的RPM包文件:
    cyrus-imapd-perl-2.3.7-1.1.el5.i386.rpm
    cyrus-imapd-utils-2.3.7-1.1.el5.i386.rpm
    db4-utils-4.3.29-9.fc6.i386.rpm
    lm_sensors-2.10.0-3.1.i386.rpm
    cyrus-imapd-2.3.7-1.1.el5.i386.rpm
    cyrus-imapd-devel-2.3.7-1.1.el5.i386.rpm
    然后,可使用rpm -ivh命令分别进行安装 。
    2.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服务的配置文件。
     为了使postfix与cyrus-imapd整合在一起,必须在postfix的
    主配置文件/etc/postfix/main.cf中加入以下内容:
     mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp
    3.启动cyrus-imapd服务并设置自动运行
       默认情况下,利用RPM包文件安装cyrus-imapd服务后,
    该服务是被停用的,所以用户必须手动启动它;如果需要开
    机自动运行,也必须手动启用。使用下面的命令可启动
    cyrus-imapd服务并设置其开机时自动运行:
    service cyrus-imapd start
    chkconfig cyrus-imapd on
    4.用户邮件信箱的管理
    创建邮件信箱时,为每一个邮件信箱命名的格式为:
    信箱类型.名称[.文件夹名称[.文件夹名称]]…
    (1)为Cyrus-IMAP管理员账户cyrus设置密码
     passwd cyrus
    (2) 使用cyradm管理工具为用户创建邮件信箱
     /usr/bin/cyradm -u cyrus  localhost
    然后使用下面的命令就可为用户lbt创建一个邮件信箱:
    createmailbox user.lbt
    (3)在用户邮件信箱下添加其他文件夹
     使用下面的命令为用户lbt在其邮件信箱下创建发件箱、垃圾箱和草稿箱
    等其他文件夹:
    createmailbox user.lbt.Send
    createmailbox user.lbt.Trash
    createmailbox user.lbt.Drafts
    (4)为用户邮件信箱设置配额
     为用户lbt的信箱user.lbt设置5M的配额,可使用下面的命令:
     setquota user.lbt 5210
     用下面的命令查看用户邮箱的使用情况:
      su -l cyrus -c /usr/lib/cyrus-imapd/quota
    (5)为用户邮件信箱设置权限
    权限缩写           描述
    none                 无任何权限
    read                 允许读取信箱的内容
    post                 允许读取和向信箱中张贴信息(如发邮件)
    append             允许读取和向信箱中张贴与插入信息
    write                除具有append权限外,还具有在信箱中删除邮件的权限,但不具有变更信箱的权限
    all                    具有所有权限
    #常用的cyradm管理命令及其缩写形式 #
    命令                      缩写                             描述
    listmailbox              lm                       列出与给定字符串相匹配的所有邮件信箱的名称
    createmailbox         cm                       创建一个新的邮件信箱
    deletemailbox         dm                       删除一个邮件信箱及其下层的所有文件夹
    renamemailbox       renm                    为邮件信箱更名
    setaclmailbox         sam                      为邮件信箱设置用户的访问权限
    deleteaclmailbox     dam                     删除用户访问邮件信箱的部分或全部权限
    listaclmailbox         lam                      列出邮件信箱的访问权限列表
    setquota                sq                        为邮件信箱设置配额
    listquota                lq                         列出邮件信箱的配额
    七.电子邮件客户端:
    试用Outlook Express、Evolution等客户端软件收发电子邮件。
    八.邮件的安全配置:
    Postfix已经基本配置完成,我们需要对邮件的发送进行控制:
    对于外域到本域的邮件,必须接收,否则,收不到任何来自外部的邮件;
    对于本域到外域的邮件,只允许从本机发出,否则,其他人通过伪造本域地址就可以向外域发信;
    对于外域到外域的邮件,直接拒绝,否则我们的邮件服务器就是Open Relay,将被视为垃圾邮件服务器。
    在/etc/postfix/main.cf中添加:
    先设置发件人的规则:
    smtpd_sender_restrictions = permit_mynetworks, check_sender_access hash:/etc/postfix/sender_access, permit
    以上规则先判断是否是本域地址,如果是,允许,然后再从sender_access文件里检查发件人是否存在,拒绝存在的发件人,最后允许其他发件人
    然后设置收件人规则:
    smtpd_recipient_restrictions = permit_mynetworks, check_recipient_access hash:/etc/postfix/recipient_access, reject
    以上规则先判断是否是本域地址,如果是,允许,然后再从recipient_access文件里检查收件人是否存在,允许存在的收件人,最后拒绝其他
    收件人。
    /etc/postfix/sender_access(添加  test.com   REJECT
    目的是防止其他用户从外部xx@test.com身份发送邮件,但登录到本机再发送则不受影响,因为第一条规则permit_mynetworks允许本机登录用户
    发送邮件。)
    /etc/postfix/recipient_access(外域只能发送给该文件里的Email地址,其他任何地址都将被拒绝,但本机到本机发送不受影响)
    最后用postmap生成hash格式的文件:
    # postmap sender_access
    # postmap recipient_access
你还不是该群组正式成员,不能参与讨论。 现在就加入