技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> 快递搭建企业级邮件系统iRedMail+Mysql+Postfix+php

快递搭建企业级邮件系统iRedMail+Mysql+Postfix+php

浏览:4227次  出处信息

    一 软件环境

     最近负责一个公司网站和邮件系统的搭建,以前自己一直没有仔细的研究过邮件系统的从零开始搭建工作,趁现在工作之余也同时将文档整理一次;

    主要针对快捷高效搭建,简单实用为主,基本够一个人数50-100的小型公司使用。

     操作系统:CentOS release 5.3 (Final) x86_64

     数据库:mysql Ver 14.12 Distrib 5.0.45

     php:php 5.2 up

     邮件系统:postfix 2.5.6 + iredmail 0.4.0

     webmail:RoundCube 1.0.2

    iRedMail 0.4.0 下载地址:戳这里

    二 安装过程

    因许多软件涉及到yum安装,这里我给出国内一个非常快的Centos镜像,请戳这里下载

    1. 数据库和邮件系统安装

     mysql 安装和postfix 安装 全部采取yum安装

以下是代码片段:
   $ yum install -y mysql mysql-server mysql-devel 
   $ yum install -y postfix

    2.php安装

以下是代码片段:
$ yum install -y php php-cli php-ldap php-pdo php-gd php-eaccelerator php-xml php-imap php-mcrypt php-pecl php-common php-mysql php-pear php-mbstring

    3.iredmail 安装

     下载解压 iRedMail-0.4.0.tar.bz2

    安装指令:

以下是代码片段:
 $ cd /path/to/iRedMail-x.y.z/   $ cd pkgs/   $ sh get_all.sh   $ cd ../   $ sh iRedMail.sh

    安装过程详细介绍请参看:戳这里

    注:

     a:安装之前请先行设定mysql的root帐号和密码;空密码不被接受;

     b:其中数据库只需选择mysql即可;

     c:webprogrem选择RoundCube即可,其他默认;

     d:请记住设定的mail admin的帐号和密码。

    三 配置过程

     因为iRedMail的高度整合,使得配置过程异常的简单。甚至可以不需要对postfix进行多余设定;

     注意修改以下基本配置:iRedmail安装过程中已经增加的这部分设定,请在配置文件的最末尾处修改

     1. myorigin

     myorigin参数指明发件人所在的域名。如果你的用户的邮件地址为user@domain.com,则该参数指定@后面的域名。缺省地,postfix使用本地主机名作为myorigin,但是建议你最好使用你的域名,因为这样更具有可读性。比如:安装postfix的主机为 mail.domain.com则我们可以这样指定myorigin:

    myorigin = domain.com

    当然我们也可以引用其他参数,如:

     myorigin = $mydomain

     2. mydestination

     mydestination参数指定postfix接收邮件时收件人的域名,换句话说,也就

    是你的postfix系统要接收什么样的邮件。比如:你的用户的邮件地址为user@domain.com, 也就是你的域为domain.com, 则你就需要接收所有收件人为user_name@domain.com的邮件。与myorigin一样,缺省地,postfix使用本地主机名作为 mydestination。如:

     mydestination = $mydomain

     mydestination = domain.com

     3. notify_classes

     在postfix系统中,必须指定一个postfix系统管理员的别名指向一个用户,

     只有这样,在用户遇到问题时才有报告的对象,postfix也才能将系统的问题报告给管理员。notify_classes参数就是用来指定向postfix管理员报告错误时的信息级别。共有以下几种级别:

    bounce:将不可以投递的邮件的拷贝发送给postfix管理员。出于个人隐私的缘故,该邮件的拷贝不包含信头。

    2bounce:将两次不可投递的邮件拷贝发送给postfix管理员。

    delay:将邮件的投递延迟信息发送给管理员,仅仅包含信头。

    policy:将由于UCE规则限制而被拒绝的用户请求发送给postfix管理员,包含整个SMTP会话的内容。

    protocol:将协议的错误信息或用户企图执行不支持的命令的记录发送给postfix管理员。同样包含整个SMTP会话的内容。

    resource:将由于资源错误而不可投递的错误信息发送给postfix管理员,比如:队列文件写错误等等。

    software:将由于软件错误而导致不可投递的错误信息发送给postfix管理员。

    缺省值为:

    notify_classes = resource, software

     4.myhostname

     myhostname 参数指定运行postfix邮件系统的主机的主机名。缺省地,该值被设定为本地机器名。你也可以指定该值,需要注意的是,要指定完整的主机名。如:

     myhostname = mail.domain.com

     5.mydomain

     mydomain参数指定你的域名,缺省地,postfix将myhostname的第一部分删除而作为mydomain的值。你也可以自己指定该值,如:

    mydomain = domain.com

     6.mynetworks

     mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问。你可以用标准的A、B、C类网络地址,也可以用CIDR(无类域间路由)地址来表示,如:

    192.168.1.0/24

    192.168.1.0/26

     7.inet_interfaces

     inet_interfaces 参数指定postfix系统监听的网络接口。缺省地,postfix监听

     所有的网络接口。如果你的postfix运行在一个虚拟的ip地址上,则必须指定其监听的地址。如:

     inet_interfaces = all

     inet_interface = 192.168.1.1

     关于postfix的配置详细介绍可参看戳这里

     需要注意的是dovecat配置在main.cf中的和master.cf的端口一致;否则会导致邮件发送失败;

以下是代码片段:
    #main.cf 
    content_filter = smtp-amavis:[127.0.0.1]:10024 
    #master.cf 
    127.0.0.1:10024  inet n  -   -   -   -  smtpd 
    -o content_filter= 
    -o local_recipient_maps= 
    -o relay_recipient_maps= 
    -o smtpd_restriction_classes= 
    -o smtpd_delay_reject=no 
    -o smtpd_client_restrictions=permit_mynetworks,reject 
    -o smtpd_helo_restrictions= 
    -o smtpd_sender_restrictions= 
    -o smtpd_recipient_restrictions=permit_mynetworks,reject 
    -o mynetworks_style=host 
    -o mynetworks=127.0.0.0/8 
    -o strict_rfc821_envelopes=yes 
    -o smtpd_error_sleep_time=0 
    -o smtpd_soft_error_limit=1001 
    -o smtpd_hard_error_limit=1000 
    -o smtpd_client_connection_count_limit=0 
    -o smtpd_client_connection_rate_limit=0 
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

    以上设定完成后,确认启动postfix、policyd、dovecot、httpd、mysqld;

    四、测试过程

    1. 访问:http://your_server/mail/

     webmail

     以上设定正确,请登录测试发送邮件是否正常;

    2. 增加邮件用户和邮箱容量大小配额设定

    a.首先登录mysql;

    b.依次执行以下指令:

以下是代码片段:
mysql> use vmail; 
Database changed 
mysql> INSERT INTO mailbox (username, password, name, maildir, quota, domain, active) 
    ->     VALUES (’testuser@hiadmin.com’, ’$1$W.UWoG.0$Bnq8mcbsi1UhFVpiJ2jvY0’, ’testuser’, ’hiamdin.com/testuser/’, ’2048’, ’hiadmin.com’, ’1’);                                          
Query OK, 1 row affected (0.00 sec) 
注: 
#在mailbox生成用户帐号、密码、以及邮箱容量quota 2048为2GB 
#其中password字段值,可以使用 openssl passwd -1 testuser生成; 
  
mysql> INSERT INTO alias (address, goto, domain, active) 
    ->     VALUES (’testuser@hiadmin.com’, ’testuser@hiadmin.com’, ’hiadmin.com’, ’1’);                      
Query OK, 1 row affected (0.00 sec) 
注: 
#alias 中生成别名;

    c.也可以用iRedmail的tools 脚本;

以下是代码片段:
   $cd /path/to/iRedMail-0.4.0/tools #该目录下有个create_mail_user_MySQL.sh的脚本,可以为你生成增加用户的sql语句; 
   #执行脚本前实现生成userlist.txt 
   $echo testuser >userlist.txt #每行一个用户名即可 
   $sh create_mail_user_MySQL.sh userlist.txt #生成output.sql 
   #登录到mysql,在vmail库中执行 
   mysql> source /path/to/output.sql

    d.设定自己域名的mx记录,再登录RoundCube测试能否收发邮件!

建议继续学习:

  1. 搜狐闪电邮箱的 Nginx/Postfix 使用模式    (阅读:32334)
  2. 如何写好一封邮件    (阅读:17809)
  3. 如何建立一套邮件发送系统    (阅读:4523)
  4. 让邮件飞一会儿    (阅读:4446)
  5. perl模块之MIME::Lite发送有附件的邮件    (阅读:4341)
  6. 一款不错的php邮件发送程序    (阅读:3540)
  7. 用Vim(gvim)发邮件(上流哇)    (阅读:3414)
  8. 如何设计注册激活邮件    (阅读:3192)
  9. IPhone上的邮件推送    (阅读:3065)
  10. Postmark的邮件代发服务    (阅读:3011)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1