LINUX下的Mail服务器的搭建
电子邮件是因特网上最为流行的应用之一。如同邮递员分发投递传统邮件一样,电子邮件也是异步的,也就是说人们是在方便的时候发送和阅读邮件的,无须预先与别人协同。与传统邮件不同的是,电子邮件既迅速,又易于分发,而且成本低廉。另外,现代的电子邮件消息可以包含超链接、HTML格式文本、图像、声音甚至视频数据。
首先我们的Mail服务器是建立在LAMP的基础上的,所以我们先要搭建一下我们的LAMP环境。
我们用到的软件有: httpd-2.2.9.tar.gz ,mysql-5.0.56.tar.gz ,php-5.2.6.tar.bz2 。
下面我们开始配置环境
1. # tar -zxvf httpd-2.2.9.tar.gz -C /usr/src/
# cd /usr/src/httpd-2.2.9/
# ./configure --prefix=/usr/local/apache2
--enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/lib --enable-auth-digest
--enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot =/usr/local/apache2/htdocs && make && make install(编译安装)
# service httpd stop
# chkconfig --level 2345 httpd off
# cd /usr/local/apache2/bin/
# ./apachectl start
# ./apachectl restart
# lsof -i:80
2. 编译安装mysql并进行配置
# tar -zxvf mysql-5.0.56.tar.gz -C /usr/src/
# cd /usr/src/mysql-5.0.56/
# useradd -M -s /sbin/nologin mysql # 添加一个mysql的非登陆用户
# ./configure --prefix=/usr/local/mysql && make && make install # 编译安装
# cd support-files
# cp my-medium.cnf /etc/my.cnf #建立配置文件
# cd /usr/local/mysql
# ./mysql_install_db --user=mysql
# chown -R root.mysql /usr/local/mysql/ # 修改所属组
# chown -R mysql /usr/local/mysql/var/
# cd /usr/local/mysql/bin
# ./mysqld_safe --user=mysql &
# ./mysql # 启动mysql
3. 安装PHP软件,并进行配置。
# tar -jxvf /mnt/Linux-server/LNS-SG5/php-5.2.6.tar.bz2 -C .
# cd php-5.2.6/323
# ./configure --prefix=/usr/local/php5 --enable-mbstring --with- apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/
--with-config-file-path=/usr/local/php5 && make && make install
# cp /usr/src/php/php.ini-dist /usr/local/php5/php.ini
# vim /usr/local/apache2/conf/httpd.conf 添加以下两行
AddType application/x-httpd-php .php 添加
DirectoryIndex index.php index.html 修改
# cd /usr/local/apache2/bin
# ./apachectl restart # 启动
至此我们的LAMP环境就搭建完成了。我们开始搭建我们的mail服务器。
4.邮件传输代理(MTA) Postfix 2.5.3 使用最新版本2.5.3 数据库/目录服务 MySQL 5.0 可选openLDAP或NetScape LDAP,本文以MySQL为蓝本,邮件投递代理(MDA) maildrop 2.0.x 支持过滤和强大功能 Web帐户管理后台 ExtMan 0.2.5 支持无限域名、无限用户 POP3 服务器 Courier-IMAP 对于大部分企业而言完全足够.WebMail 系统 ExtMail 1.1 支持多语言、全部模板化,功能基本齐全 SMTP认证库 Cyrus SASL 标准的SASL实现库,可以支持Courier authlib
其他数据认证库 Courier Authlib 0.60 authlib是maildrop, courier-imap等服务的关键部件
日志分析及显示 mailgraph_ext 在ExtMan中已经包含了. Web 服务器 Apache 2.x OS 自带 .
我们开始安装postfix
首先我们需要停掉sendmail,然后安装这几个必备的包,可能你的在装机时已经装上了。然后通过yum 安装postfix ,这里我们已经装过了。执行postconf -m 我们查看一下它是否支持mysql验证。好了,我们的第一步就算完成了。
5. 接下来我们开始修改postfix的配置文件:
除了图上的两处还有
inet_interfaces = all 115行
mynetworks = 192.168.0.0/24, 127.0.0.0/8 262行
然后我们重启postfix.
6. 配置好postfix 之后我们来安装authlib,使用authlib登陆验证.这样可以不用管后台用户数据是用什么方式存储的.比方说MySQL/LDAP
7. 安装完毕后我们需要修改以下配置文件。
8 . 修改Mysql支持的相关配置文件
# vim /etc/authlib/authmysqlrc
MYSQL_SERVERlocalhost 26行
MYSQL_USERNAMEextmail
MYSQL_PASSWORDextmail
MYSQL_SOCKET/var/lib/mysql/mysql.sock
MYSQL_PORT3306
MYSQL_DATABASEextmail
MYSQL_USER_TABLEmailbox
MYSQL_CRYPT_PWFIELDpassword
MYSQL_UID_FIELDuidnumber
MYSQL_GID_FIELDgidnumber
MYSQL_LOGIN_FIELDusername
MYSQL_HOME_FIELDconcat('/var/mailbox/',homedir)用户家目录的绝对路径
MYSQL_MAILDIR_FIELDconcat('/var/mailbox/',maildir)
重新启动courier-authlib, 并创建邮箱目录
# service courier-authlib start
# mkdir /var/mailbox
9. 安装courier-imap 屏蔽IMAP服务
# yum install courier-imap
ExtMail目前还没有正式支持IMAP目录,因此需要屏蔽IMAP,只提供pop3服务。而就目前的使用情况来看,IMAP使用的非常少,绝大部分OutLook/Foxmail用户都习惯使用POP3而非IMAP。
# vim /usr/lib/courier-imap/etc/imapd
IMAPDSTART=NO
# vim /usr/lib/courier-imap/etc/imapd-ssl
IMAPDSSLSTART=NO
重新启动courier-imap
# service courier-imap start
10. 安装maildrop
maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,是courier邮件系统组件之一,我们在此将使用maildrop来代替postfix自带的MDA。
# yum install maildrop
为了使Postfix支持Maildrop,必须修改/etc/postfix/master.cf文件:
# vim /etc/postfix/master.cf
63 maildrop unix - n n - - pipe
64 flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}
注意上面一行前面要有2个空格,否则启动失败
配置main.cf 由于maildrop不支持一次接收多个收件人,因此必须在main.cf里增加如下参数:
maildrop_destination_recipient_limit = 1
# maildrop -v 测试
检查安装结果,请确保有"Courier Authentication Library extension enabled."一句出现:
maildrop RPM包安装时,会自动创建vuser用户及vgroup用户组,专门用于邮件的存 储, vuser:vgroup的uid/gid都是1000
修改邮箱目录属性:
chown vuser.vgroup /var/mailbox -R
11. 安装cyrus-sasl ========用户登录验证
# yum install cyrus-sasl 官网:wiki.extmail.org
开启postfix的smtp认证
# vim /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination
让postfix支持虚拟用户
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = maildrop
# local_recipient_maps = (注释去掉) 209行
编辑smtpd.conf文件, 让虚拟用户到mysql数据库认证
# vim /usr/lib64/sasl2/smtpd.conf
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/spool/authdaemon/socket
修改authdaemon socket目录权限
如果该目录权限不正确修改,maildrop及postfix等将无法正确获取用户的信息及密码认证:
# chmod -R 777 /var/spool/authdaemon/
# service saslauthd start
12. 安装ExtMail和extman ======安装web界面 MUA
# yum install extsuite-webmail
# cd /var/www/extsuite/extmail
# cp webmail.cf.default webmail.cf
# vim webmail.cf
语言选项,可改作:
SYS_USER_LANG = zh_CN 77行
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox/ 127行
SYS_MYSQL_USER = extmail 139+行
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
# chown -R vuser.vgroup /var/www/extsuite/extmail/cgi/ # 修改所属组和所有者
# yum install extsuite-webman
# vim /var/www/extsuite/extman/webman.cf
此处即为您在前文所设置的用户邮件的存放目录,可改作:
12 SYS_MAILDIR_BASE = /var/mailbox
21 SYS_CAPTCHA_ON = 0 //不需要认证码
# mkdir /tmp/extman
# chown vuser.vgroup /tmp/extman
设置虚拟域和虚拟用户的配置文件
# cp /var/www/extsuite/extman/docs/mysql_virtual_*.cf /etc/postfix/
# chown -R vuser.vgroup /var/www/extsuite/extman/cgi/
导入mysql数据库结构及初始化数据
# cd /var/www/extsuite/extman/docs
# mysql -u root -p <extmail.sql
# mysql -u root -p <init.sql
测试authlib认证:
# /usr/sbin/authtest -s login postmaster@extmail.org extmail
Authentication succeeded.
Authenticated: postmaster@extmail.org (uid 1000, gid 1000)
Home Directory: /var/mailbox/extmail.org/postmaster
Maildir: /var/mailbox/extmail.org/postmaster/Maildir/
Quota: (none)
Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0
Cleartext Password: extmail
Options: (none)
这样表明ExtMan的正确安装,数据库也正确导入,courier-authlib能正确连接到mysql数据库
修改httpd.conf文件
NameVirtualHost *:80
<VirtualHost *:80>
ServerName mail.lx.com
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/
Alias /extmail /var/www/extsuite/extmail/html/
ScriptAlias /extman/cgi/ /var/www/extsuite/extman/cgi/
Alias /extman /var/www/extsuite/extman/html/
SuexecUserGroup vuser vgroup
</VirtualHost>
# service httpd restart
13. 访问及测试 http://mail.lx.com/extman
选择管理即可登入extman进行后台管理了。默认管理帐号为:root@extmail.org
密码为:extmail*123*
登录成功后创建虚拟域和虚拟用户
使用telnet登录25和110端口进行测试
LINUX下的Mail服务器的搭建的更多相关文章
- Linux下的SVN服务器搭建
Linux下的SVN服务器搭建 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总 ...
- Linux下的SVN服务器搭建(转)
Linux下的SVN服务器搭建 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此 ...
- VPS CentOS-6 下 LNMP HTTP服务器的搭建
VPS CentOS-6 下 LNMP HTTP服务器的搭建 前言 恢复更新后的第一篇博文, 前段时间由于各种理由, 把博客更新给宕掉了, 个人独立博客的开发也搁浅了, 现在随着工作的逐步稳定, 决心 ...
- Linux下安装Tomcat服务器和部署Web应用
一.上传Tomcat服务器
- Linux下部署FTP服务器
Linux下部署FTP服务器 下载安装包 在这里介绍的是离线部署FTP,首先下载对应的rpm包,下载链接为: 下载vsftpd服务 下载FTP客户端 安装ftp服务器 关闭防火墙 service ip ...
- Linux下配置Tomcat服务器
Linux下配置Tomcat服务器和Windows下其实差不多,可以去官网下载安装包释放或者在线下载,只是当时下载的windows.zip文件,现在下载.tar.gz格式的即可,下面使用命令行的方式安 ...
- 转】Linux下安装Tomcat服务器和部署Web应用
原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4097608.html 感谢! 一.上传Tomcat服务器
- Linux下使用mail命令发送邮件
因为需要经常备份网站的数据,所以了解并学习了下linux下如何通过shell来发送邮件,这里以CentOS为例,使用mail命令来进行外部邮件的发送.mail命令的语法如下: Usage: mail ...
- Linux下登陆mysql服务器不需要输入账号密码信息
linux下登录mysql服务器一般都是在命令行手动输入链接信息 [root@localhost ~]# mysql -hlocalhost -uroot -p11111 而在mysql 5.6之后版 ...
随机推荐
- luoguP3480 [POI2009]KAM-Pebbles 阶梯Nim
将序列差分并翻转之后,变成了阶梯\(Nim\)的模板题 QAQ #include <cstdio> #include <cstring> #include <iostre ...
- Luogu P4606 [SDOI2018] 战略游戏 圆方树 虚树
https://www.luogu.org/problemnew/show/P4606 把原来的图的点双联通分量缩点(每个双联通分量建一个点,每个割点再建一个点)(用符合逻辑的方式)建一棵树(我最开始 ...
- 【20181102T1】优美的序列【二分+ST表】
题面 [正解] 相当于是 \(GCD_{i=L}^{R} A_i = min_{i=L}^{R} \{A_i\}\) 然后GCD可以用ST表实现\(O(log A_i)\)查询 并且GCD是递减的,所 ...
- Shell 学习笔记之传递参数
传递参数 设置权限 chmod +x file.sh 传递参数 ./file.sh parameter1 ... 特殊字符 $# 传递到脚本的参数个数 $* 以一个单字符串的形式显示所有向脚本传递的参 ...
- [LearnOpenGL]照相机的变换、坐标系、摄像机
前言 跟着LearnOpenGL上学着做项目,的确对于知识掌握得更清晰一些了. 第一个项目 第一个项目,是关于简单的熟悉矩阵变换的,创建了10个立方体,代码如下. // 视图矩阵,看作是一个照相机 g ...
- DataTable初次使用笔记
概述:DataTable是一个jQuery插件,用于生成HTML表格,功能很强大. 使用: 使用DataTable需要引入jQuery,因为他是基于jQuery的插件,然后引入DataTable的js ...
- Codeforces Round #352 (Div. 2) B. Different is Good 水题
B. Different is Good 题目连接: http://www.codeforces.com/contest/672/problem/B Description A wise man to ...
- ROS知识(9)----安装Turtlebot2和远程控制Turtlebot2
安装turtlebot2,场景为:turtlebot2上搭载着一台电脑主机A,该电脑作为主机Master,有自带的电源和3D传感器,roscore在该台机器上启动.pc电脑远程连接A,和A通讯,pc不 ...
- Comparable<T> 和 Comparator<T>
相同点: Comparable<T> 和 Comparator<T>都是接口 不同点: 两者声明的方法不同.前者是compareTo()方法,后者是compare()方法. C ...
- Effective OC : 1-5
1,了解Objective-C语言的起源: OC为C语言的超集,为C加入了面向对象的特性. 要理解C中的指针和内存模型. 2.在类文件里尽量少引入其它头文件: 引入过多头文件.将借口暴露,添加耦合度. ...