构建基于系统用户的Postfix邮件系统(编译安装)

 

          构建基于系统用户的 Postfix 邮件系统
实验环境
公司需要在 RHEL5 服务器中搭建一套电子邮件系统,考虑到系统的安全性和稳定性,选择使用 Postfix 作为发送和传递邮件的服务器, dovecot 提供邮件收取服务,另外结合 Apache 安装 squirrelmail 程序作为辅助用户使用邮件的 web 界面。
实验准备
u     构建 AMP 环境,为 web 邮件界面提供运行支持
u     做主机名,确保 /etc/hosts 文件有 IP 地址与主机名的对应关系记录,确保主机名中的域名作为邮件域
u     搭建 DNS ,向指定邮件服务器提供邮件路由
u     停止 sendmail 服务,避免与 Postfix 发生冲突,也可直接卸载
u     服务器基本配置
主机名 mail.lwb.com
IP 地址 172.16.100.141
子网掩码 255.255.0.0
默认网关 172.16.100.141
DNS 服务器 172.16.100.141
实验思路
1.     检查 AMP 环境、主机名和 DNS
2.     配置 Postfix
3.     配置 dovecot
4.     配置 squirrlmail
5.     Postfix 配置 SMTP 发信认证功能
6.     测试收发邮件
实现步骤
一. AMP 环境、主机名和 DNS
Ø      AMP 环境(测试可以使用第 4 章( web 服务)中的方法)
Ø      检查主机名( /etc/hosts 文件和 /etc/sysconfig/network 文件)

[root@mail ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       mail.lwb.com mail localhost.localdomain localhost
::1            localhost6.localdomain6 localhost6
[root@mail ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=mail.lwb.com

Ø      检查 DNS ,确保 lwb.com 域内所有主机的名称解析,确保 lwb.com 域的 MX 记录指向邮件服务器

[root@mail ~]# chkconfig named on

. 配置 Postfix
准备软件包
postfix-2.4.6.tar.gz        
postfix-2.4.6-vda-ng.patch.gz (是一个 vda 补丁包,用于支持对虚拟用户设置邮箱空间配额)
1.     编译安装 Postfix
    一般 RHEL5 系统默认安装了 sendmail 程序,用于提供基本的发信服务,在安装 Postfix 前先将其停止,以避免域 Postfix 冲突。

[root@mail ~]# service sendmail stop
[root@mail ~]# chkconfig --level 35 sendmail off

1.1 创建运行 Postfix 服务的用户( postfix )、组( postfix postdrop

[root@mail ~]# groupadd postdrop
[root@mail ~]# groupadd postfix
[root@mail ~]#useradd -M -g postfix -G postdrop -s /sbin/nologin postfix

Ø       -M: 不创建用户宿主目录
Ø       -g: 指定用户所属组
Ø       -G: 指定用户额外的组
1.2 释放源码包,打上 vda 补丁包

[root@mail l6]# ls
postfix-2.4.6.tar.gz    
postfix-2.4.6-vda-ng.patch.gz
[root@mail l6]# tar zxf postfix-2.4.6.tar.gz
[root@mail l6]# gunzip postfix-2.4.6-vda-ng.patch.gz
[root@mail l6]# cd postfix-2.4.6
[root@mail postfix-2.4.6]# patch -p1 < ../postfix-2.4.6-vda-ng.patch

1.3 预配置编译参数
在编译前需要使用“ make makefiles ”命令调整编译参数,以便 Postfix 支持 SASL 认证和查询 MYSQL 数据库。具体的编译参数可以参考 Postfix 源码目录中 README_FILES 子目录下的说明文件,如 SASL_README MYSQL_README 文件。
本例采用源码编译安装的 AMP 平台,并使用 REHL5 系统自带的 cyrus-sasl 认证软件,因此根据 mysql cyrus-sasl 的库文件和头文件安装位置对编译参数 CCARGS AUXLIBS 进行适当调整。
配置命令如下:

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

其中,编译参数作用分析:
u     CCARGS 参数:为编译器提供额外的参数。“ -I ”选项指出标准的额外头文件的存放目录。如, mysql cyrus-sasl 的头文件分别位于目录 /usr/local/mysql/lib/mysql /usr/include/sasl
u     AUXLIBS 参数:指出位于标准位置之外的额外函数库。如果需要链接 SASL MySQL 或任何附加的数据库,而且它们不是存放在标准位置( /usr/lib 目录),则必须在 AUXLIBS 参数中指出这些函数库的路径。如, cyrus-sasl mysql 的库文件分别位于目录: /usr/lib/sasl2 /usr/local/mysql/lib/mysql
1.4 编译

[root@mail postfix-2.4.6]# make

1.5 安装

[root@mail postfix-2.4.6]# make install

执行“ make install ”命令后,期间会需要设置如下一些安装参数,一般都使用默认设置(按回车),如果有特殊需要,直接在后面输入自己的设置,回车即可。

install_root: [/]                    // 指定系统的根目录
tempdir: [/root/l6/postfix-2.4.6]   // 指定 postfix-install 脚本使用的临时文件目录
config_directory: [/etc/postfix]       // 设置 Postfix 的配置文件目录
daemon_directory: [/usr/libexec/postfix]
command_directory: [/usr/sbin]      // 设置 Postfix 命令的存放目录
queue_directory: [/var/spool/postfix] // 设置邮件队列目录
sendmail_path: [/usr/sbin/sendmail]
newaliases_path: [/usr/bin/newaliases]
mailq_path: [/usr/bin/mailq]
mail_owner: [postfix]
setgid_group: [postdrop]
html_directory: [no]
manpage_directory: [/usr/local/man]
readme_directory: [no]

2. 修改 Postfix 的配置文件 /etc/postfix/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/                 // 设置邮件存储位置和格式

在上述配置中,参数分析:
u     Mydestination 参数:值设置为“ $mydomain,$myhostname ”后,则发送到 [email protected] [email protected] 的邮件都可以被 Postfix 服务器接收。如果设置为“ $mydomain ”,那么只能发送到 [email protected] 的邮件才能被 Postfix 服务器接收。
u     home_mailbox 参数:在 Postfix 服务器中,支持如下两种最常见的邮箱存储方式(当指定的存储位置左后一个字符为“ / ”时,自动使用 Maildir 存储方式)。
Ø       Mailbox :这种方式将同一用户的所有邮件内容存储在同一个文件中,通常对应为目录“ /var/spool/mail ”中以用户名命名的文件。 Mailbox 方式相对比较古老,在邮件数量较多时查询和管理的效率较低。
Ø       Maildir :这种方式每一个用户在自己的宿主目录下都对应有一个目录 Maildir ,每一封邮件作为一个独立的文件保存。与 Mailbox 存储方式比较, Maildir 方式的存取速度和效率更好。
3. 重启 postfix 服务,并验证其监听的 TCP 端口( 25
     Postfix 系统的启动控制主要是通过“ /usr/sbin/postfix” 命令进行,只需要添加相应的参数( start stop check reload )即可分别启动、停止、检查、重载 Postfix 服务。该命令实际上会调用“ /etc/postfix/postfix-script ”脚本来对 Postfix 服务进行控制。

[root@mail ~]# postfix start
查看其 25 端口是否是如下信息(看是否有 4 0
root@mail ~]# netstat -antp |grep :25
tcp      0     0 0.0.0.0:25         0.0.0.0:*     LISTEN    4626/master

4. 添加邮件用户账号

[root@mail ~]# adduser -s /sbin/nologin zs;passwd zs
[root@mail ~]# adduser -s /sbin/nologin ls;passwd ls

三.配置 dovecot
1. 编译安装 dovecot
准备软件包    dovecot-1.1.4.tar.gz

[root@mail ~]# useradd -M -s /sbin/nologin dovecot
[root@mail l6]# ls
dovecot-1.1.4.tar.gz
[root@mail l6]# tar zxf dovecot-1.1.4.tar.gz
[root@mail l6]# cd dovecot-1.1.4
[root@mail dovecot-1.1.4]#./configure –sysconfdir=/etc –with-mysql
[root@mail dovecot-1.1.4]#make && make install

2.     建立 dovecot.conf 配置文件,并进行设置
dovecot 源码目录中,拷贝模板配置文件到 /etc/, 进行修改,或者从 /etc 目录拷贝

[root@mail dovecot-1.1.4]# cp dovecot-example.conf /etc/dovecot.conf
[root@mail dovecot-1.1.4]# cp /etc/dovecot-example.conf /etc/dovecot.conf
[root@mail dovecot-1.1.4]#vi /etc/dovecot.conf
ssl_disable = yes                      // 禁用 SSL 机制
protocols = pop3 imap                 // 指定支持的邮局协议
disable_plaintext_auth = no            // 允许明文密码认证
mail_location = maildir:~/Maildir       // 设置邮件存储格式及位置

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

如果没有创建 PAM 认证文件,最后以系统邮箱用户登陆会出现:
4. 重启 dovecot ,并验证其监听的 TCP 端口( 110 143
Dovecot 服务的启动程序位于“ /usr/local/sbin ”目录中,使用“ -c ”选项可以指定所使用的配置文件的位置。如果使用默认配置文件,则直接执行“ doveoct ”命令即可。如果修改了配置文件需要重新启动服务,可以先找到 dovecot 进程,杀死进程,再启动服务。

[root@mail ~]# /usr/local/sbin/dovecot -c /etc/dovecot.conf
[root@mail ~]# echo "/usr/local/sbin/dovecot -c /etc/dovecot.conf"
[root@mail ~]# netstat -anpt |grep dovecot
tcp      0     0 0.0.0.0:110        0.0.0.0:*     LISTEN    30040/dovecot
tcp      0     0 0.0.0.0:143        0.0.0.0:*     LISTEN    30040/dovecot

四.实现 webmail 邮件页面
准备软件包
Ø      Squirrelmail 软件包: squirrelmail-1.4.13.tar.bz2
Ø      中文语言包: zh_CN-1.4.13-20071220.tar.bz2
1. 安装 squirrelmail 程序包、中文语言包

[root@mail l6]# ls
squirrelmail-1.4.13.tar.bz2
zh_CN-1.4.13-20071220.tar.bz2
[root@mail l6]# tar jxf squirrelmail-1.4.13.tar.bz2 -C /usr/local/apache2/htdocs/
[root@mail l6]# cd /usr/local/apache2/htdocs/
[root@mail htdocs]# mv squirrelmail-1.4.13 webmail
[root@mail htdocs]#cd webmail
[root@mail webmail]#tar jxf  ~/l6/zh_CN-1.4.13-20071220.tar.bz2

2. 创建及调整数据目录、附加目录

[root@mail webmail]# mkdir -p attach data
[root@mail webmail]# chown -R daemon:daemon attach data
[root@mail webmail]# chmod 730 attach

3. 建立 config.php 配置文件,并进行修改

[root@mail webmail]# cp config/config_default.php config/config.php
[root@mail webmail]# vi config/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 = '/usr/local/apache2/htdocs/webmail/data/';
$attachment_dir = '/usr/local/apache2/htdocs/webmail/attach/';

4. 启动 httpd 服务,在浏览器中登陆 squirrelmail 系统

[root@web ~]# /usr/local/apache2/bin/apachectl start
[root@mail ~]# echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.local

访问 http://mail.lwb.com/webmail,
注意 :如果出现如下页面,需要修改 Apache 配置文件 httpd.conf ,在 DirectoryIndex 项后添加 index.php
五.为 Postfix 提供发信认证功能
1. 设置 Cyrus SASL 函数库,并启动 saslauthd 服务
建立 SMTP 认证用的配置文件“ /usr/lib/sasl2/smtpd.conf , 指定验证方式为 saslauthd

[root@web ~]# cd /usr/lib/sasl2/
[root@web sasl2]# cp Sendmail.conf smtpd.conf
[root@web sasl2]# vi /usr/lib/sasl2/smtpd.conf
pwcheck_method:saslauthd
[root@web sasl2]# service saslauthd start
[root@web sasl2]# chkconfig --level 35 saslauthd on

2. 修改 main.cf 配置文件,添加 SMTP 认证相关的配置参数,并重新加载配置

[root@web ~]# vi /etc/postfix/main.cf
smtpd_sas1_auth_enable = yes                  // 启用 SMTP 认证
smtpd_sas1_security_options = noannonymous    // 禁止匿名登录
mynetworks = 127.0.0.1
smtpd_recipient_restrictions=permit_mynetworks,permit_sas1_authenticated,reject_unauth_destination
[root@web ~]# postfix reload

u     在上述配置参数中,作用如下;
mynetworks
:用于控制可以通过本服务器外发邮件的网络地址或 IP 地址,设置为 127.0.0.1 是为了确保 Webmail 系统可以正常发送邮件。
u     smtpd_recipient_restrictions :设置收件人地址过滤规则,其匹配策略是:“从上至下逐条检查,有匹配即停止”。
Ø       permit_mynetworks :允许 IP mynetworks 的用户使用本邮件系统寄出邮件。
Ø       permit_sas1_authenticated :允许通过 SMTP 认证的用户向外发送邮件。


Ø       reject_unauth_destination :当收件人地址不包括在 Postfix 的授权网络内时,将拒绝发送该邮件。 Postfix 的授权网络包括由以下配置参数指定的域及其子域: mydestination inet_interfaces virtual_alias_maps virtual_mailbox_maps relay_domain
3. 使用 OE 邮件客户端进行发信测试
修改邮件用户 haha 的账户属性,在“服务器”选项卡中选中“我的服务器要求身份验证”,即可在客户端启用 SMTP 认证支持。若不选中此项,将无法成功向外域发送邮件。
六.测试收发邮件
 
附加说明:
1.Postfix 的相关目录(成功编译安装好 Postfix 后,需要对相关的配置文件进行了解)
Ø       /etc/postfix: 该目录包括 postfix 服务的主配置文件、各类脚本、查询表等。
Ø       /usr/libexec/postfix/: 该目录中包括 postfix 服务的各个服务器程序的文件。
Ø       /var/spool/postfix/: 该目录中包括 postfix 服务的邮件队列相关的子目录。其中,每个队列子目录用于保存不同的邮件 , 如:
u     Incoming (传入):刚接收到的邮件。
u     Active (活动):正在投递的邮件。
u     Deferred (推迟):以前投递失败的邮件。
u     Hold (约束):被阻止发送的邮件。
u     Corrupt (错误):不可读或不可分析的邮件
Ø       /usr/sbin/: 该目录中包括 Postfix 服务的管理工具程序,这些程序文件名以 post 开头。
u     Postalias: 用于构造、修改和查询别名表。
u     postconf: 用于显示和编辑 main.cf 配置文件。
u     postfix: 用于启动、停止 Postfix ,要求有 root 用户权限。
u     postmap: 用于构造、修改或者查询查询表。
u     postqueue: 用于管理邮件队列,一般用户使用。
u     postsuper: 用于管理邮件队列,要求有 root 用户权限。
2.Postfix 的配置文件
Postfix 系统最主要的配置文件包括:
Ø       /etc/postfix/main.cf: postfix 服务的配置文件
     在主配置文件 main.cf 中,可以设置的配置参数有 300 多个。大部分配置参数都被自动设置了默认值,如果在 main.cf 文件中没有对应的设置,那么 Postfix 服务器将使用默认值来启动及运行。大多数时候,只需要设置少数的几个配置参数,就可以满足一般邮件服务器的要求。
Ø       /etc/postfix/master.cf: master 程序的配置文件
postfix 系统提供的 postconf 工具可以用来辅助配置,不带任何选项的 Postfix 命令将打印出当前的 Postfix 服务所使用的配置参数,而添加“ -n ”选项时将只列出不同于默认值的配置参数。
3.postfix 的日志文件
Postfix 系统的日志文件位于“ /var/log/maillog , 该文件中记录了 Postfix 服务器的运行状态信息(启动、出错及与其他 SMTP 服务器的会话信息等)。在安装调试 Postfix 邮件系统及日常的维护过程中,经常会使用带“ -f ”选项的 tail 命令来观察日志内容的实时更新。
Ø       用“ tail -f ”跟踪“ /var/log/maillog ”日志文件的内容实时变化

[root@mail ~]# tail -f /var/log/maillog

Ø       如果内容较多,可以使用 egrep 命令进行过滤,只关注包含“ warning ”、“ fatal ”等较重要的事件记录。可以使用如下命令:

[root@mail ~]#egrep ‘(regect|warning|error|fatal|panic):’ /var/log/maillog

4. 设置用户别名与邮件群发
用户别名是邮件系统的一个重要功能,主要用来实现邮件群发功能。邮件用户别名的实现依赖于 aliases 机制,而 aliases 机制需要用到查询表。
4.1Postfix 查询表
Postfix 服务器在操作过程中经常需要做各式各样的转换与查询,如:改写邮件地址、判断客户端是否来自授权网络、设定别名等,很多运行参数都可以通过查询表( lookup tab )来决定。
    
例如有 3 个用户 zs,ls,ww ,需要给这 3 个用户发送相同内容的邮件,为了使操作简单,我们使用名称 student 对应这 3 个用户,然后只要给 student 发送邮件, Postfix 就会将邮件内容自动转发给这 3 个用户。由于 main.cf 文件本身的配置格式限制,无法逐一描述这样的关键字与值的对应映射关系。在实际应用中,经常把这些对应关系都写入到另一个文件 ——也就是查询表中,查询表保存了关键字( key )和一组值( value )间的简单对应关系。然后在 main.cf 配置文件中添加配置参数“ alias_maps ”,指向该文件即可。

[root@mail ~]#vi /etc/postfix/main.cf
alias_maps = hash:/etc/aliases

4.2 设置邮件别名实现群发功能

[root@mail ~]#vi /etc/aliases
zu:lili,xixi,hihi                          // 在文件末尾添加该行
[root@mail ~]#newaliases

5. 为了避免对 Postfix 邮件系统的干扰,可以先暂时关闭防火墙和 selinux 服务。如果还是不能出现预期结果,就从前往后逐步检查配置是否正确。

[root@mail ~]#chkconfig –level 35 iptables off
[root@mail ~]#vi /etc/selinux/config
SELINUX=disabled
[root@mail ~]#reboot

 

本文出自 “刘文斌” 博客,谢绝转载!

你可能感兴趣的:(邮件,系统,构建,编译,postfix)