

快递搭建企业级邮件系统iRedMail+Mysql+Postfix+php
source link: https://blogread.cn/it/article/316?f=hot1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

快递搭建企业级邮件系统iRedMail+Mysql+Postfix+php
一 软件环境
最近负责一个公司网站和邮件系统的搭建,以前自己一直没有仔细的研究过邮件系统的从零开始搭建工作,趁现在工作之余也同时将文档整理一次;
主要针对快捷高效搭建,简单实用为主,基本够一个人数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参数指明发件人所在的域名。如果你的用户的邮件地址为[email protected],则该参数指定@后面的域名。缺省地,postfix使用本地主机名作为myorigin,但是建议你最好使用你的域名,因为这样更具有可读性。比如:安装postfix的主机为 mail.domain.com则我们可以这样指定myorigin:
myorigin = domain.com
当然我们也可以引用其他参数,如:
myorigin = $mydomain
2. mydestination
mydestination参数指定postfix接收邮件时收件人的域名,换句话说,也就
是你的postfix系统要接收什么样的邮件。比如:你的用户的邮件地址为[email protected], 也就是你的域为domain.com, 则你就需要接收所有收件人为[email protected]的邮件。与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/
以上设定正确,请登录测试发送邮件是否正常;
2. 增加邮件用户和邮箱容量大小配额设定
a.首先登录mysql;
b.依次执行以下指令:
以下是代码片段:
mysql> use vmail;
Database changed
mysql> INSERT INTO mailbox (username, password, name, maildir, quota, domain, active)
-> VALUES (’[email protected]’, ’$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 (’[email protected]’, ’[email protected]’, ’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测试能否收发邮件!
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK