搭建 postfix 邮件服务器
实验环境:
      RHEL5 系统中,搭建 Postfix 邮件系统,实现单域环境下收发邮件 Postfix 可以直接使用本地系统用户作为邮件用户,也可以使用虚拟邮件用户。虚拟邮件用户对应的账号信息通常存储于数据库中,最常见的是 MYSQL 数据库。
实验准备:
Ø       系统安装
    安装 RHEL5 (或者更高版本,也可以安装 CENTOS5 , 可以采用图形化和文本模式两种安装模式,一般为了提高服务器的整体性能,一般采用文本模式安装。在这里我使用文本模式安装 RHEL5 ,并且在安装过程没有选择任何软件包。在大多数情况下, RHEL 5 系统默认安装了 sendmail 程序,用于提供基本的发信服务。因此,在安装 Postfix 前将 sendmail 服务停止,以免与 Postfix 服务发生冲突。
Ø       软件安装
     所有需要软件包( postfix,dovecot,squirrelmail,httpd )都采用 rpm 包,如果存在依赖关系,使用 yum 方式安装。
Ø       服务器基本配置
      主机名 mail.lwb.com  
IP 地址 172.16.100.147
子网掩码 255.255.0.0
      默认网关 172.16.100.147
      DNS 服务器 172.16.100.147
实验思路:
1.     做主机名
2.     DNS
3.     安装并配置 postfix 服务器
4.     安装并配置 dovecot 服务器
5.     配置发信认证及 webmail 系统
6.     建立邮箱用户,进行收发邮件
实验步骤:
1. 做主机名 ( 主机名为 mail.lwb.com)
      主机名中必须包含邮件域的域名。如果是已经装好的系统,可以将主机名更改为包含相应邮件域的主机名;如果是新安装的系统,在安装时就可以直接设置主机名。不管是哪种情况,做好后,都要进行相应的检查,保证配置正确。
Ø       检查 /etc/hosts 文件,查看是否有主机名称解析记录
Ø       检查 /etc/sysconfig/network 文件,查看主机名是否正确
2. 配置 DNS
2.1 更改主配置文件(需要修改全局配置,并且在区域配置中添加相应邮件域及反向域)
2.2 创建区域数据库配置文件
Ø       在正向域中,需要添加 A 记录和 MX 邮件记录

mail      IN      A      172.16.100.147
lwb.com. IN      MX    10      mail
Ø       在反向域中,添加 PTR 记录

147       IN      PTR    lwb.com.
2.3. 添加权限(这里添加权限方式跟普通添加读写权限方式不一样,不过这样做之后权限很合适,要详细了解,请查看《搭建 DNS 服务器》)

[root@mail ~]# bind-chroot-admin –s
2.4 重启服务,并设置开机自动启动

[root@mail ~]# service named restart
[root@mail ~]# chkconfig named on
3. 安装并配置 postfix 服务器
      在配置之前,需要做 yum ,可以自动解决安装软件包时的相容性和依赖关系。

[root@mail ~]# mkdir /media/rhel5
[root@mail ~]# mount /dev/cdrom /media/rhel5
[root@mail ~]# cd /media/rhel5/Server
[root@mail Server]# rpm -ivh createrepo-0.4.4-2.fc6.noarch.rpm
[root@mail Server]# cd /media/
[root@mail media]# createrepo .
[root@mail ~]# vi  /etc/yum.repos.d/rhel-debuginfo.repo
修改为以下内容
[rhel5]
baseurl=file:///media
enabled=1
gpgcheck=0
3.1 安装 Postfix

[root@mail ~]# rpm -ivh postfix-2.3.3-2.i386.rpm
3.2 编辑 main.cf 配置文件(该配置文件的修改分先后顺序 )

[root@mail ~]# vi /etc/postfix/main.cf
inet_interfaces = all                  // 设置监听 25 端口在哪些 IP 地址可以使用
myhostname = mail.lwb.com          // 设置 Postfix 服务器使用的主机名
mydomain = lwb.com               / / 设置 Postfix 服务器使用的邮件域
myorigin = $mydomain                // 设置发件人邮件地址中的邮件域名
mydestination = $mydomain,$myhostname // 设置可接收的邮件地址中的域名
home_mailbox = Maildir/            // 设置邮件存储位置和格式
3.3 重启 postfix 服务,并验证其监听的 TCP 端口( 25

[root@mail ~]# service postfix restart
[root@mail ~]# chkconfig postfix on
[root@mail ~]# netstat -antp |grep :25
查看其 25 端口是否是如下信息(看是否有 4 0
tcp      0     0 0.0.0.0:25      0.0.0.0:*   LISTEN    4626/master
4 .安装并配置 dovecot 服务器
4.1 安装 dovecot (需要使用 YUM 方式安装)

[root@mail ~]# yum install dovecot* -y
4.2 修改 dovecot.conf 配置文件

[root@mail ~]# vi /etc/dovecot.conf
ssl_disable = yes                      // 禁用 SSL 机制
protocols = pop3 imap                 // 指定支持的邮局协议
disable_plaintext_auth = no            // 允许明文密码认证
mail_location = maildir:~/Maildir       // 设置邮件存储格式及位置
4.3 创建 PAM 认证文件(默认已创建,如果没有则创建如下文件)

[root@mail ~]# vi /etc/pam.d/dovecot
#%PAM-1.0
auth       required     pam_nologin.so
auth       include      system-auth
account    include      system-auth
session     include      system-auth
4.4cd / 重启 dovecot ,并验证其监听的 TCP 端口( 110 143

[root@mail ~]# service dovecot restart
[root@mail ~]# chkconfig dovecot on
查看其端口信息
[root@mail ~]# netstat -anpt |grep dovecot
tcp      0     0 :::110          :::*        LISTEN    4687/dovecot
tcp      0     0 :::143          :::*        LISTEN    4687/dovecot
5. 配置 webmail 系统和 SMTP 用户认证
5.1 配置 webmail 系统
   1. 安装 squirrlmail (使用 yum 方式,会自动安装 httpd php

[root@mail ~]# yum install squirrelmail* -y
 2. 创建及调整数据目录、附加目录 ( 如果没有特殊需求也可不做此步,以及第 3 步的最后两项也不用更改,使用默认值 )

[root@mail ~]# cd /var/www/html/mail/
[root@mail mail]#mkdir attach data
[root@mail mail]#chown –R daemon.daemon attach data
[root@mail mail]#chmod 730 attach
   3. 修改 config.php 配置文件 ( 如果没有该文件,拷贝模板文件 config_default.php ,在进行修改 )
注: /usr/share/squirrelmail 目录连接到网站根目录,而不要直接移到根目录下,会出现无法找到或打开默认配置文件。

[root@mail ~]# ln -s /usr/share/squirrelmail/ /var/www/html/mail
[root@mail ~]# cd /var/www/html/mail/config
[root@mail config]# vi config.php
$squirrelmail_default_language = 'zh_CN';
$default_charset          = 'zh_CN.UTF-8';
$domain                 = 'lwb.com';
$smtpServerAddress      = 'localhost';
$smtpPort               = 25;
$imap_server_type       = 'dovecot';
$imapPort               = 143;
$data_dir                 = '/var/www/html/mail/data/';
$p_w_upload_dir           = '/var/www/html/mail/attach/';
4. 重启 httpd 服务

[root@mail ~]# service httpd restart
[root@mail ~]# chkconfig httpd on
5.2 设置 SMTP 用户认证
     1. 安装于“ cyrus ”相关的软件包(默认系统已经安装)
     2. 修改 main.cf 配置文件,添加如下配置项

[root@mail ~]#vi /etc/postfix/main.cf          // 添加下面内容
smtpd_sas1_auth_enable = yes
smtpd_sas1_security_options = noannonymous
mynetworks = 127.0.0.1
smtpd_recipient_restrictions=permit_mynetworks,permit_sas1_authenticated,reject_unauth_destination
3. 启动 saslauthd 服务

[root@mail ~]# service saslauthd restart
[root@mail ~]# chkconfig saslauthd on
4. 重启 postfix 服务

[root@mail ~]# service postfix restart
6. 建立邮箱用户(这里邮箱用户就是系统用户,为保证安全性,不允许登陆系统那个),然后直接在客户端浏览器中输入 http://mail.lwb.com/webmail/, web 登陆页面中输入邮件用户账号和密码,即可进行收发邮件。
 
总结:
设置邮件群发功能
  修改 /etc/aliases 文件,在该文件中,每一行对应为一条别名(这里可以把别名理解为组,把用户加入别名中,给别名发邮件,别名中的所有用户就会收到邮件)设置记录。设置后执行“ newaliases ”命令,以便重新生成“ /etc/aliases.db ”数据库文件。
例:

[root@mail ~]#vi /etc/aliases
zu:user1,user2,user3,user4
[root@mail ~]#newaliases
限制用户可发送的邮件大小
/etc/postfix/main.cf 配置文件中,添加如下配置项,该配置项对系统用户和虚拟邮件用户同时起作用,根据实际情况设置邮件大小限制。“ 20971520 ”表示 20M

[root@mail ~]# vi /etc/postfix/main.cf
message_size_limit = 20971520
限制用户的邮箱空间大小
Postfix 邮件系统中,根据邮件用户的类型、邮件存储的方式不同,可以分别采取不同的方式来限制用户的邮箱空间大小。下面是三种方式来限制用户的邮箱大小,使用时应根据 Postfix 服务器的具体情况进行选择。
u     Mailbox_size_limit 配置参数:主要针对使用 Mailbox 邮件存储方式的情况,默认的限制值为 50MB 。该配置参数对系统用户起作用。
u     Virtual_mailbox_limit 配置参数:主要针对使用虚拟邮件用户的情况,默认的值也是 50MB 。安装了 VDA 补丁以后,该配置参数对使用 Mailbox Maidir 存储方式的用户都起作用。
u     Quota 磁盘配额功能:主要针对 Linux 系统用户作为邮件用户,可以直接使用 Linux 中的 quota 磁盘配额功能。这种方式对使用 Mailbox Maildir 存储方式的用户都起作用。
为了避免对 Postfix 邮件系统的干扰,可以先暂时关闭防火墙和 selinux 服务。如果还是不能出现预期结果,就从前往后逐步检查配置是否正确。

[root@mail ~]#chkconfig –level 35 iptables off
[root@mail ~]#vi /etc/selinux/config
SELINUX=disabled
[root@mail ~]#reboot
 
 
总结与分析:
如果 Postfix dovecot 都是 rpm 包安装,而 squirrelmail 程序包、中文语言包是 tar 软件包,如果出现以下问题。
需要在 /var/www/html/mail/data, 将创建的 data 目录的属主由设置为的 daemon 改为 apache 即可解决该问题。
在编译安装软件包时,有时候需要给特定的目录或文件设置属主、属组,这些都是在做软件包时特定要求的系统用户来执行,当然 root 用户也可执行。
1 :在做 Discuz !论坛,释放出来的部分文件或目录需要设置属主为 daemon
2 :在做 Webmail 邮件页面时,创建的数据目录 data 和附加目录 attach ,需要 daemon 的属主和属组。