RedHat 5.4+ Postfix +Extmail实现基于虚拟用户的邮件系统(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

一、系统环境

 

1、Extmail架构  

                                         

2、拓朴图

 

 

  

  

服务器

客户端

RedHat 5.4

mail.postfix.org

172.16.1.254

172.16.1.10

 

所软件包:

postfix-2.8.6.tar.gz

extman-1.1.tar.gz

extmail-1.2.tar.gz

courier-authlib-0.63.0.tar.bz2

Unix-Syslog-1.1.tar.gz

Time-HiRes-1.9725.tar.gz

File-Tail-0.99.3.tar.gz

rrdtool-1.4.7.tar.gz

二、基本配置

1、配置IP

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=172.16.1.254

NETMASK=255.255.255.0

:wq

[root@localhost ~]# service network restart

 

2、配置DNS文件

[root@mail ~]# vim /etc/resolv.conf

nameserver 172.16.1.254

 

3、配置hosts文件

[root@mail ~]# vim /etc/hosts 

127.0.0.1       localhost.localdomain localhost

172.16.1.254    mail.postfix.org

 

4、配置主机名:mail.postfix.org

[root@localhost ~]# vim /etc/sysconfig/network

HOSTNAME=mail.postfix.org

:wq  保存

[root@localhost ~]# hostname mail.postfix.org

断开终端,再次连接,这样就需要重新启动系统:ctrl+d

[root@mail ~]# hostname

mail.postfix.org

 

5SELinux关闭、LINUX关闭防火墙

SELinux关闭

1 永久方法  需要重启服务器

修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。

2 临时方法  设置系统参数

使用命令setenforce 0

 

LINUX关闭防火墙

1 重启后永久性生效:

开启:chkconfig iptables on

关闭:chkconfig iptables off

2 即时生效,重启后失效:

开启:service iptables start

关闭:service iptables stop

 

三、配置YUM()

参考方案:http://yanghuawu.blog.51cto.com/2638960/886129

挂载光盘:本次挂载目录:/mnt

[root@mail ~]# mount -i /dev/cdrom /mnt

 

四、安装bind(DNS)

[root@mail ~]# yum install bind bind-chroot caching-nameserver

[root@mail ~]# cd /var/named/chroot/etc/

[root@mail etc]# ll

total 32

-rw-r--r-- 1 root root   405 Dec 18 09:17 localtime

-rw-r----- 1 root named 1230 Jul 30  2009 named.caching-nameserver.conf

-rw-r----- 1 root named  955 Jul 30  2009 named.rfc1912.zones

-rw-r----- 1 root named  113 Dec 18 14:30 rndc.key

[root@mail etc]# cp -p named.caching-nameserver.conf named.conf

[root@mail etc]# cp named.conf named.confbak  #备份

[root@mail etc]# vim named.conf

修改:

行数

 15         listen-on port 53 { any; };

 27         allow-query     { any; };

 28         allow-query-cache { any; };

 37         match-clients      { any; };

 38         match-destinations { any; };

:wq

[root@mail etc]# cd named.rfc1912.zones named.rfc1912.zonesbak  #备份

[root@mail etc]# vim named.rfc1912.zones 

复制修改以下内容:

 21 zone "localhost" IN {

 22         type master;

 23         file "localhost.zone";

 24         allow-update { none; };

 25 };

 修改如下:

 27 zone "postfix.org" IN {

 28         type master;

 29         file "postfix.org.zone";

 30         allow-update { none; };

 31 };

:wq

[root@mail etc]# cd ../var/named/

[root@mail named]# pwd

/var/named/chroot/var/named

[root@mail named]# cp -p localhost.zone postfix.org.zone

[root@mail named]# cp postfix.org.zone postfix.org.zonebak   #备份

[root@mail named]# vim postfix.org.zone

$TTL    86400

@               IN SOA  ns.postfix.org.    root (

                                        42              ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D )            ; minimum

 

                IN NS           ns.postfix.org.

ns              IN A            172.16.1.254

mail            IN A            172.16.1.254

pop3            IN CNAME        mail

smtp            IN CNAME        mail

@               IN MX 10        mail

:wq

 

[root@mail named]# service named restart

[root@mail named]# chkconfig named on

[root@mail named]# rndc reload

server reload successful

[root@mail named]# dig -t mx postfix.org

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5 <<>> -t mx postfix.org

;; global options:  printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 663

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

 

;; QUESTION SECTION:

;postfix.org.                   IN      MX

 

;; ANSWER SECTION:

postfix.org.            86400   IN      MX      10 mail.postfix.org.

 

;; AUTHORITY SECTION:

postfix.org.            86400   IN      NS      ns.postfix.org.

 

;; ADDITIONAL SECTION:

mail.postfix.org.       86400   IN      A       172.16.1.254

ns.postfix.org.         86400   IN      A       172.16.1.254

 

;; Query time: 5 msec

;; SERVER: 172.16.1.254#53(172.16.1.254)

;; WHEN: Thu Dec 27 09:24:26 2012

;; MSG SIZE  rcvd: 99

五、关闭sendmail,并不随机启动或者卸载

[root@mail named]# service sendmail status

sendmail (pid  2754) is running...

[root@mail named]# service sendmail stop

[root@mail named]# chkconfig sendmail off

 

六、安装所需依赖rpm

yum install -y httpd php php-mysql mysql mysql-server mysql-devel openssl-devel dovecot perl-DBD-MySQL tcl tcl-devel libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel expect db* cyrus*

 

七、检查以上开发所有用到的RPM包组是否启动安装

[root@mail named]# yum grouplist 

   Development Libraries        开发言库

   Development Tools           开发工具

   Legacy Software Development  传统软件开发

   X Software Development       图形开发组

 

方法安装:

[root@mail named]# yum groupinstall "FTP Server"

 

八、启动mysql数据库,并给mysqlroot用户设置密码

[root@mail named]# service mysqld start

[root@mail named]# chkconfig mysqld on

[root@mail named]# mysqladmin -u root password 'redhat'     #mysql的用户设置密码:redhat

或也可以以下操作:

---------------------------------授权本地用户

[root@mail named]# mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.0.77 Source distribution

 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

mysql> set password for root@'localhost'=password('redhat');

Query OK, 0 rows affected (0.00 sec)

 

mysql> set password for root@'127.0.0.1'=password('redhat');  

Query OK, 0 rows affected (0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

---------------------------------------------授权远程用户

mysql> grant all privileges on *.* to root@'%' identified by 'redhat';

Query OK, 0 rows affected (0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 

mysql> \q

 

九、安装postfix

1、创建postfix的执行用户postfix和属组postfix

[root@mail ~]# groupadd -g 2525 postfix

[root@mail ~]# useradd -g postfix -u 2525 -s /sbin/nologin -M postfix

[root@mail ~]# groupadd -g 2526 postdrop

[root@mail ~]# useradd -g postdrop -u 2526 -s /bin/false -M postdrop

2、编译、安装postfix

[root@mail ~]# tar -zxvf postfix-2.8.6.tar.gz -C /usr/local/src/

[root@mail ~]# cd /usr/local/src/

[root@mail src]# cd postfix-2.8.6/

[root@mail postfix-2.8.6]# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl  -DUSE_TLS ' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2   -lssl -lcrypto' makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl  -DUSE_TLS ' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2   -lssl -lcrypto'

[root@mail postfix-2.8.6]# make

[root@mail postfix-2.8.6]# make install

如下配置:

install_root: [/]

tempdir: [/usr/local/src/postfix-2.8.6] /tmp

config_directory: [/etc/postfix]

command_directory: [/usr/sbin]

daemon_directory: [/usr/libexec/postfix]

data_directory: [/var/lib/postfix]

html_directory: [no]

mail_owner: [postfix]

mailq_path: [/usr/bin/mailq]

manpage_directory: [/usr/local/man]

newaliases_path: [/usr/bin/newaliases]

queue_directory: [/var/spool/postfix]

readme_directory: [no]

sendmail_path: [/usr/sbin/sendmail]

setgid_group: [postdrop]

 

3、生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低

newaliases_path: [/usr/bin/newaliases]

[root@mail postfix-2.8.6]# newaliases

[root@mail postfix-2.8.6]# postfix start  #启动postfix

[root@mail postfix-2.8.6]# netstat -anp |grep :25# netstat -tupln |less

tcp    0    0 0.0.0.0:25     0.0.0.0:*    LISTEN  13280/master

 

[root@mail postfix-2.8.6]# postconf -m    #模块 mysql

btree

cidr

environ

hash

internal

mysql

nis

proxy

regexp

static

tcp

texthash

unix

 

实现用service 服务名 start 启动服务!

源代码没有控制同步,可借助于rpm包的控制同步

[root@mail postfix-2.8.6]# mkdir /tmp/abc

[root@mail postfix-2.8.6]# cd /tmp/abc/

[root@mail abc]# cp /mnt/Server/postfix-2.3.3-2.1.el5_2.i386.rpm ./

[root@mail abc]# ll

total 3656

-r--r--r-- 1 root root 3734257 Dec 18 17:31 postfix-2.3.3-2.1.el5_2.i386.rpm

[root@mail abc]# rpm2cpio postfix-2.3.3-2.1.el5_2.i386.rpm |cpio -id

16333 blocks

[root@mail abc]# ll

total 3680

drwxr-xr-x 5 root root    4096 Dec 18 17:32 etc

-r--r--r-- 1 root root 3734257 Dec 18 17:31 postfix-2.3.3-2.1.el5_2.i386.rpm

drwxr-xr-x 7 root root    4096 Dec 18 17:32 usr

drwxr-xr-x 3 root root    4096 Dec 18 17:32 var

[root@mail abc]# cd etc/

[root@mail etc]# ll

total 24

drwxr-xr-x 2 root root 4096 Dec 18 17:32 pam.d

drwxr-xr-x 2 root root 4096 Dec 18 17:32 postfix

drwxr-xr-x 3 root root 4096 Dec 18 17:32 rc.d

[root@mail etc]# cd rc.d/

[root@mail rc.d]# ll

total 8

drwxr-xr-x 2 root root 4096 Dec 18 17:32 init.d

[root@mail rc.d]# cd init.d/

[root@mail init.d]# ll

total 8

-rwxr-xr-x 1 root root 2404 Dec 18 17:32 postfix

[root@mail init.d]# cp postfix /etc/init.d/

[root@mail init.d]# vim /etc/init.d/postfix   #查看代码,不用编辑()

[root@mail init.d]# service postfix stop

[root@mail init.d]# netstat -tupln |grep 25

tcp        0      0 172.16.1.253:53             0.0.0.0:*                   LISTEN      3486/named         

udp        0      0 172.16.1.253:53             0.0.0.0:*                               3486/named 

 

[root@mail init.d]# service postfix start

[root@mail init.d]# netstat -tupln |grep 25

tcp        0      0 172.16.1.253:53             0.0.0.0:*                   LISTEN      3486/named         

tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      13429/master        

udp        0      0 172.16.1.253:53             0.0.0.0:*                               3486/named         

[root@mail init.d]# chkconfig postfix on # chkconfig --add postfix   #相同

[root@mail init.d]# chkconfig --list |grep postfix

postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off

 

4、创建账号

[root@mail init.d]# useradd user1

 

5、发邮件测试

[root@mail init.d]# telnet 127.0.0.1 25

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 mail.postfix.org ESMTP Postfix

HELO mail.postfix.org

250 mail.postfix.org

mail from:root@localhost

250 2.1.0 Ok

rcpt to:user1@localhost

250 2.1.5 Ok

data

354 End data with <CR><LF>.<CR><LF>

11111111111111111111111111111

.

250 2.0.0 Ok: queued as 48ABCE72F3

quit

221 2.0.0 Bye

Connection closed by foreign host.

 

6、查看邮件日志

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

邮件发送成功!





本文转自 yhw85 51CTO博客,原文链接:http://blog.51cto.com/yanghuawu/1103287,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
存储 网络协议 Linux
Postfix + Extmail 企业邮件服务器搭建
ExtMail套件用于提供从浏览器中登录、使用邮件系统的Web操作界面,而Extman套件用于提供从浏览器中管理邮件系统的Web操作界面。它以GPL版权释出,设计初衷是希望设计一个适应当前高速发展的IT应用环境,满足用户多变的需求,能快速进行开发、改进和升级,适应能力强的webmail系统。
749 0
Postfix + Extmail 企业邮件服务器搭建
|
Web App开发 关系型数据库 MySQL