yunvn1 发表于 2015-11-24 11:23:28

Postfix搭建邮件服务器

1. 邮件服务器基本原理
      MUA:邮件用户代理,供用户写信、读信、寄信
      MTA:邮件传输代理,接收、递送邮件
      MDA:邮件投递代理,投递本地邮件到适当的邮箱
      SMTP:简单邮件传输协议,寄信协议
      POP3:邮局协议第3版,用户把邮件从服务器上剪切回来,收信协议
      IMAP4:因特网消息访问协议第4版,用户把邮件从服务器上复制回来,收信协议
      邮箱:存放邮件的地方
      邮件:email
      收件人:邮件的接收者
      邮件别名:一个邮箱的其他名字,一个邮箱可以有多个名字
      邮件列表:群发功能
      邮件转发:发到user@163.com的邮件转到boos@163.com
-------------------------------------------------------------------------------------------------------------------            
2. Postfix简介
      2.1 Postfix是MTA
          高性能、安全、兼容性

      2.2 安装
          2.2.1 准备工作                              
                邮件服务器要有合法的计算机名,如:mail.abc.com,并需要到DNS服务器上进行域名注册,才能正常启动
      DNS配置参见DNS配置

                在abc.com区域文件中进行A记录和MX记录的设置
                abc.com.      INMX   5    mail.abc.com.
                mail.abc.com.   INA         192.168.1.111

          2.2.2 安装postfix
      rpm -ivh postfix-2.3.3-2.i386.rpm                  

       2.3 目录
         /etc/postfix/            Postfix配置文件目录
         /var/spool/mail            用户电子邮箱放置目录
         /var/spool/postfix         邮件队列目录
         /var/log/maillog         Postfix日志文件
----------------------------------------------------------------------------------------------------------------------
       2.4 配置
         1.主配置文件
             /etc/postfix/mail.cf
            
             主配置文件修改后用 postfix reload命令重新载入主配置文件

   
         2.邮件别名配置文件
            /etc/aliases                  
            /etc/aliases.db

            邮件别名配置文件修改后用postalias hash:/etc/aliases命令
            生成aliases.db数据库文件
-----------------------------------------------------------------------------------------------------------------
       2.5 主配置文件分析
             queue_directory = /var/spool/postfix      队列目录

             command_directory = /usr/sbin             程序目录

             daemon_directory = /usr/libexec/postfix   后台程序目录

             mail_owner = postfix                      进程运行所有者

             myhostname = mail.abc.com               邮件主机名称

             mydomain = abc.com                        邮件主机域名

             myorigin = $mydomain                      设置发送邮件所使用的主机名或域名

             inet_interfaces = all                     监听端口

             mydestination = $myhostname, $mydomain    可以接受邮件的主机名或域名

             mynetworks = 192.168.1.0/24, 127.0.0.0/8设置可以转发邮件的网络

             relay_domains = $mydestination            设置可以转发的邮件域名

             alias_maps = hash:/etc/aliases            指定用户别名定义的文件路径

             alias_database = hash:/etc/aliases      指定别名表数据库文件路径

      2.6 postfix收发信依据

            2.6.1 postfix帮助client发送信件:
                  当客户端来自信任的网络,符合 $mynetworks 的设定时
                  当客户端来自信任的主机,符合 $relay_domains的设定项目时
                  当客户端来自不信任的网域,但是去的目的地主机符合$relay_domains设定时

            2.6.2 什么情况下,postfix会将信件收下来
                  收件人主机名符合 $inet_interfaces 的设定
                  收件者主机名符合 $mydestination 的设定
                  收件人主机名符合 $virtual_maps 的设定
-------------------------------------------------------------------------------------------------------------
       2.7 测试main.cf文件

         2.7.1 显示main.cf里面设定的数据指令
               # postconf -n

         2.7.2 检查main.cf语法错误
               # postfix check   
               若没有提示,则配置正确

         
       2.8 启动、停止、重启postfix服务
               # service postfix start/stop/restart
               # /etc/init.d/postfix start/stop/restart

         开机自动启动
               # chkconfig postfix on


       2.9 检测邮件服务是否启动成功
             # netstat -tl | grep smtp
               tcp   0    0 *:smtp         *:*                  LISTEN

   
---------------------------------------------------------------------------------------------------------------------------
2.10 命令行收发邮件测试
   发邮件:
         # telnet mail.abc.com 25         //链接服务器25号端口
         Trying 192.168.1.111...
         Connected to mail.abc.com (192.168.1.111).
         Escape character is '^]'.
         220 mail.abc.com ESMTP Postfix       //返回220表示连接成功

         * helo mail.abc.com                  //通过helo介绍自己
         250 mail.abc.com                     //返回250表示成功

         * mail from:user@abc.com               //mail from:发件人地址
         250 Ok

         * rcpt to:root@abc.com               //rcpt to:收件人地址
         250 Ok

         * data                                 //data:开始输入邮件正文
         354 End data with <CR><LF>.<CR><LF>
         helo root                            //邮件正文部分
         helo root
         helo root

         * .                                    //以&quot;.&quot;表示正文结束
         250 Ok: queued as 511DAA63DE

         * quit                                 //quit:退出
         221 Bye
         Connection closed by foreign host.

   收邮件: # mail

------------------------------------------------------------------------------------------------------------------
3.2 设置邮件别名和邮件群发功能

    3.2.2 确保postfix主配置文件里有这两句:
            alias_maps = hash:/etc/aliases
            alias_database = hash:/etc/aliases

    3.2.1 修改/etc/aliases文件
            admin:root               //发给admin@abc.com的信,实际是发给root@abc.com
            group:user1,user2      //发给group@abc.com的信,实际是发给user1@abc.com和user2@abc.com
            user1: root@abc.com       //发给user1@abc.com的信,实际转发给root@.abc.com
         
    3.2.2 生成aliases.db数据库
            # postalias hash:/etc/aliases

    3.2.3 验证
          1.给admin@abc.com发一封信,root应该收到信
             # echo &quot;hello world&quot; | mail admin@abc.com

             root用户使用mail命令收邮件
               
          2.给group@abc.com发一封信,user2应该收到信
            # echo &quot;hello world&quot; | mail group@abc.com
               
            使用mail命令,以user2的身份去收信
            # mail -u user2   
         
          3.给user1@abc.com发一封信,root用户应该收到信
            # echo &quot;hello world&quot; | mail user1@abc.com

            以user1身份收信没有收到
            # mail -u user1
            以root用户收信应该收到
            # mail         
-------------------------------------------------------------------------------------------------------------------         
4.POP和IMAP的实现,dovecot可以实现POP和IMAP服务器功能

    4.1 安装
      # rpm -ivh dovecot-1.0.7-2.el5.i386.rpm \
      >perl-DBI-1.52-1.fc6.i386.rpm \
      >mysql-5.0.45-7.el5.i386.rpm


    4.2 配置
      # vim /etc/dovecot.conf
                  protocols = imap imaps pop3 pop3s

    4.3 启动
                # service dovecot start
                # chkconfig --level 35 dovecot on

      4.4 验证是否启动
                # netstat -tl |grep imap
                  tcp      0   0 *:imaps      *:*            LISTEN
                  tcp      0   0 *:imap       *:*            LISTEN
                # netstat -tl |grep pop
                  tcp      0   0 *:pop3s      *:*            LISTEN
                  tcp      0   0 *:pop3       *:*            LISTEN

测试:在客户端使用Outlook客户端收发邮件
-----------------------------------------------------------------------------------------------------------------------
5. 安装配置Webmail

       5.1 安装apache服务
         rpm -ihv httpd-2.2.3-11.el5_1.3.i386.rpm
   
       5.2 安装Webmail和相关软件包

       squirrelmail-1.4.8-4.0.1.el5.noarch.rpm
       php-5.1.6-20.el5.i386.rpm
       php-cli-5.1.6-20.el5.i386.rpm
       php-common-5.1.6-20.el5.i386.rpm
       php-mbstring-5.1.6-20.el5.i386.rpm
         
       5.3 配置Squirrelmail
       # /usr/share/squirrelmail/config/conf.pl

       在server setting 里把domain设为 mail.abc.com
       在language里把default language设为zh_CN

       5.4 启动相关服务
             # service httpd start
       # service postfix restart
       # service dovecot restart

       5.5 访问Webmail的界面
         http://mail.abc.com/webmai
页: [1]
查看完整版本: Postfix搭建邮件服务器