#!/bin/bash
#赵云,2012年1月29日
#本脚本为初次安装一个邮件服务器,方便快捷,后期的优化自己调试。
#postfix+mysql+extmail+虚拟用户
#运行前,首先配置好系统的yum环境,脚本适用于RedHat AS 5的系统,CentOS一样。
alias cp='cp -i'
unalias cp
     yum install gcc *c++* php php-mysql mysql mysql-devel mysql-server *mysql* openssl-devel dovecot db*-devel gd-*  -y  &>/dev/null
     yum install cyrus-sasl-lib  perl-DBD-MySQL tcl tcl-devel libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel expect -y &>/dev/null
     yum install cyrus-sasl cyrus-sasl-devel cyrus-sasl-plain perl  httpd dovecot perl-DBD-MySQL DBD-mysql-* -y  &>/dev/null
     yum remove cyrus-sasl-lib cyrus-sasl -y 
#结束不必要的进程
killall dovecot &>/dev/null
killall httpd &>/dev/null
killall postfix & >/dev/null
killall sendmail &>/dev/null
#
service mysqld stop &>/dev/null
rm -rf /var/lib/mysql/*
service mysqld start &>/dev/null
service sendmail stop &>/dev/null
rpm -e postfix &>/dev/null
rpm -e sendmail --nodeps &>/dev/null
tar xzf config.tar.gz
#创建用户
userdel -r postfix
useradd -u 1000 postfix -s /sbin/nolog
groupadd postdrop -g 90
#设置主机名
echo "请输入主机名"
read hostname
#设置邮件域名
echo "请输入邮件域名"
read maildomain
#设置访问域名
echo "要访问的域名" 
read domain
#设置主机名
hostname $hostanme
sed -i "s/^HOSTNAME=.*/HOSTNAME=$hostname/" /etc/sysconfig/network

#安装postfix
tar xzf postfix-2.7.3.tar.gz  
cd postfix-2.7.3
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' &>/dev/null
make &>/dev/null
clear
echo ; echo ; echo ; echo ; echo ; echo 
echo "请手动配置,如果不配置,请回车"
sleep 3
make install 
newaliases
cd ..
#创建数据库
tar zxf extman-1.1.tar.gz 
cd extman-1.1/docs 
mysql -u root < extmail.sql
mysql -u root < init.sql
#建立虚拟用户文件
cp mysql_virtual_* /etc/postfix
cd ../../
#修改/etc/postfix/main.cf文件
cp config/main.cf /etc/postfix/main.cf
#配置虚拟用户支持--smtp认证
tar xjf courier-authlib-0.63.0.tar.bz2 
cd courier-authlib-0.63.0
./configure  --prefix=/usr/local/courier-authlib --without-stdheaderdir --with-authmy--with-mysql-libs=/usr/lib/mysql \
 --with-mysql-includes=/usr/include/mysql &>/dev/null && make &>/dev/null && make install &>/dev/null
make install-configure &>/dev/null
cp courier-authlib.sysvinit /etc/init.d/courier-authlib
cd ..
#修改主配置,authdaemonrc 文件
dir=/usr/local/courier-authlib/etc/authlib
sed -i '27cauthmodulelist="authmysql"' $dir/authdaemonrc 
sed -i '34cauthmodulelistorig="authmysql"' $dir/authdaemonrc
#修改数据库配置,authmysqlrc 文件 
sed -i '26cMYSQL_SERVER  127.0.0.1' $dir/authmysqlrc 
sed -i '27cMYSQL_USERNAME  extmail' $dir/authmysqlrc 
sed -i '28cMYSQL_PASSWORD  extmail' $dir/authmysqlrc
sed -i '49c#MYSQL_SOCKET /tmp/mysql.sock' $dir/authmysqlrc
sed -i '68cMYSQL_DATABASE extmail' $dir/authmysqlrc
sed -i '83cMYSQL_USER_TABLE mailbox' $dir/authmysqlrc
sed -i '133cMYSQL_HOME_FIELD concat('/mailbox/',homedir)' $dir/authmysqlrc
sed -i '150cMYSQL_MAILDIR_FIELD concat('/mailbox/',maildir)' $dir/authmysqlrc
#通过authdaemond进行认证
echo 'pwcheck_method: authdaemond' > /usr/lib/sasl2/smtpd.conf
echo 'authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket/'>>/usr/lib/sasl2/smtpd.conf
chmod -R 755  /usr/local/courier-authlib/var/spool/authdaemon
echo "/usr/local/courier-authlib/lib/courier-authlib " >> /etc/ld.so.conf
ldconfig &>/dev/null
chmod 755 /etc/init.d/courier-authlib 
chkconfig --add courier-authlib
chkconfig mysqld on
chkconfig courier-authlib on
service   courier-authlib   start
#配置虚拟用户支持
cp config/dovecot.conf /etc/dovecot.conf
#配置数据查询文件
cp config/dovecot-mysql.conf /etc/dovecot-mysql.conf
#建立邮箱目录,并调整权限
rm -rf /mailbox
mkdir -p /mailbox/extmail.org/postmaster/Maildir 
chown -R postfix:postfix /mailbox
#安装Extmail
tar xzf Unix-Syslog-1.1.tar.gz 
cd Unix-Syslog-1.1
perl Makefile.PL &>/dev/null 
make &>/dev/null ; make install &>/dev/null
cd ..
tar xzf DBI-1.616.tar.gz 
cd DBI-1.616
perl Makefile.PL &>/dev/null
make &>/dev/null ; make install &>/dev/null
cd ..
#安装extmail  程序套件
tar xzf extmail-1.2.tar.gz 
rm -rf /var/www/extmail
mv extmail-1.2 /var/www/extmail
cp config/webmail.cf /var/www/extmail/webmail.cf
cp config/httpd.conf /etc/httpd/conf/httpd.conf
#重新启动dovecot服务
service dovecot restart
#邮箱账号:postmaster           密码:extmail  域名:extmail.org 
#部署Extman Web 管理界面 
tar xzf GD-2.46.tar.gz 
cd GD-2.46
perl Makefile.PL &>/dev/null; make &>/dev/null ; make install &>/dev/null
cd ..
tar xzf File-Tail-0.99.3.tar.gz 
cd File-Tail-0.99.3
perl Makefile.PL &>/dev/null; make &>/dev/null ; make install &>/dev/null
cd ..
rpm -ivh rrdtool-1.2.27-3.el5.i386.rpm &>/dev/null 
    rpm -ivh rrdtool-perl-1.2.27-3.el5.i386.rpm  &>/dev/null
 
tar xzf extman-1.1.tar.gz 
rm -rf /var/www/html/extman
mv extman-1.1 /var/www/html/extman
chown -R postfix:postfix /var/www/html/extman/
chown -R postfix:postfix /var/www/html/extman/cgi/
cp config/webman.cf /var/www/html/extman/webman.cf
mkdir /var/extman &>/dev/null
chmod 777 /var/extman
rm -rf /usr/local/mailgraph_ext
mkdir /usr/local/mailgraph_ext
cp /var/www/html/extman/addon/mailgraph_ext/mailgraph_ext.pl  /usr/local/mailgraph_ext/ 
cp /var/www/html/extman/addon/mailgraph_ext/qmonitor.pl  /usr/local/mailgraph_ext/ 
/var/www/html/extman/addon/mailgraph_ext/mailgraph-init start
sed -i "993c<VirtualHost $domain>" /etc/httpd/conf/httpd.conf 
sed -i "994cServerName $domain" /etc/httpd/conf/httpd.conf
sed -i "69cmyhostname = $hostname" /etc/postfix/main.cf
sed -i "s/^mydomain.*/mydomain = $maildomain/g" /etc/postfix/main.cf
service httpd restart
/var/www/html/extman/daemon/cmdserver -d &>/dev/null
#在浏览器中访问 http://服务器地址/extman/ 
#管理账号:root@extmail.org            密码:extmail*123*
#添加开机启动服务
cp config/postfix /etc/init.d/
chkconfig --add postfix
service postfix restart &>/dev/null
chkconfig dovecot on
chkconfig httpd on
chkconfig postfix on
#删除临时文件
rm -rf DBI-1.616
rm -rf Unix-Syslog-1.1
rm -rf postfix-2.7.3
rm -rf File-Tail-0.99.3
rm -rf courier-authlib-0.63.0
rm -rf GD-2.46
rm -rf config
echo ; echo ; echo ; echo ; echo ; echo 
echo "
安装完成,请使用浏览器打开 http://服务器域名/extman/
管理账号:root@extmail.org            密码:extmail*123*
默认密码在完成安装后自行修改。 
用户邮箱登录http://服务器域名
默认邮箱账号:postmaster           密码:extmail  域名:extmail.org "
echo ; echo ; echo ; echo ; echo ; echo
这个是脚本的内容,可下载安装包,我都打包好了。
下载地址:  http://down.51cto.com/data/323527 
减压后,由一个install.sh的文件,用本脚本内容替换掉,按提示执行安装。
本文转自zhaoyun00 51CTO博客,原文链接:http://blog.51cto.com/zhaoyun/768714

一个简单的基于postfix+extmail+mysql的邮件系统相关推荐

  1. 通过Dapr实现一个简单的基于.net的微服务电商系统(十)——一步一步教你如何撸Dapr之绑定...

    如果说Actor是dapr有状态服务的内部体现的话,那绑定应该是dapr对serverless这部分的体现了.我们可以通过绑定极大的扩展应用的能力,甚至未来会成为serverless的基础.最开始接触 ...

  2. 一个简单的基于python图书管理系统

    一个简单的基于python图书管理系统 开发平台:pycharm 开发语言:python 数据库:mysql 登录界面 主界面 数据库文件 想要的联系丘丘:793064854.2R带走

  3. php使用mysql怎么连接浏览器_一个简单的php实现的MySQL数据浏览器

    一个简单的php实现的MySQL数据浏览器 更新时间:2007年03月11日 00:00:00   作者: 这个程序可以用来浏览MySQL中的数据,您可以稍做修改就可以做出很不错的MySQL浏览器. ...

  4. 通过Dapr实现一个简单的基于.net的微服务电商系统(十九)——分布式事务之Saga模式...

    目录: 一.通过Dapr实现一个简单的基于.net的微服务电商系统 二.通过Dapr实现一个简单的基于.net的微服务电商系统(二)--通讯框架讲解 三.通过Dapr实现一个简单的基于.net的微服务 ...

  5. 通过Dapr实现一个简单的基于.net的微服务电商系统(十八)——服务保护之多级缓存...

    很久没有更新dapr系列了.今天带来的是一个小的组件集成,通过多级缓存框架来实现对服务的缓存保护,依旧是一个简易的演示以及对其设计原理思路的讲解,欢迎大家转发留言和star 目录: 一.通过Dapr实 ...

  6. 通过Dapr实现一个简单的基于.net的微服务电商系统(十七)——服务保护之动态配置与热重载...

    在上一篇文章里,我们通过注入sentinel component到apigateway实现了对下游服务的保护,不过受限于目前变更component需要人工的重新注入配置以及重启应用更新componen ...

  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(十六)——dapr+sentinel中间件实现服务保护...

    dapr目前更新到了1.2版本,在之前4月份的时候来自阿里的开发工程师发起了一个dapr集成Alibaba Sentinel的提案,很快被社区加入到了1.2的里程碑中并且在1.2 release 相关 ...

  8. 通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格...

    多运行时是一个非常新的概念.在 2020 年,Bilgin Ibryam 提出了 Multi-Runtime(多运行时)的理念,对基于 Sidecar 模式的各种产品形态进行了实践总结和理论升华.那到 ...

  9. 通过Dapr实现一个简单的基于.net的微服务电商系统(十一)——一步一步教你如何撸Dapr之自动扩/缩容...

    上一篇我们讲到了dapr提供的bindings,通过绑定可以让我们的程序轻装上阵,在极端情况下几乎不需要集成任何sdk,仅需要通过httpclient+text.json即可完成对外部组件的调用,这样 ...

  10. 通过Dapr实现一个简单的基于.net的微服务电商系统(九)——一步一步教你如何撸Dapr之OAuth2授权-百度版...

    目录: 一.通过Dapr实现一个简单的基于.net的微服务电商系统 二.通过Dapr实现一个简单的基于.net的微服务电商系统(二)--通讯框架讲解 三.通过Dapr实现一个简单的基于.net的微服务 ...

最新文章

  1. 全文翻译(二): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning
  2. 基于ARM的GCC编译器,各版本arm-gcc区别与安装
  3. python爬虫-urllib模块
  4. Ubuntu宿主机与VMware中其他系统虚拟机的互通
  5. 根据二叉树的先序和中序求后序遍历
  6. 五分钟轻松了解Hbase面向列的存储
  7. Microsoft Visual Studio 打开代码出现乱码解决方案
  8. 开机未发现nvidia控制面板_Windows10或者其他操作系统开机提示“未发现NVIDIA控制面板,从Microsoft Store中安装NVIDIA控制面板”的解决办法...
  9. Leetcode每日一题:190.reverse-bits(颠倒二进制位)
  10. win10个人壁纸默认保存位置
  11. Data - 信息获取途径汇总
  12. Android 字母导航条实现
  13. typora高级设置字体_设计黑金风格高级感logo
  14. ubuntu 10.04解决Skype中麦克风不工作问题
  15. Anaconda下载太慢问题解决
  16. R语言学习-----数据的载入
  17. 从零开始搭建自己的网站可外网访问从购买服务器开始
  18. (JAVA实现)平衡二叉树的判断
  19. python——列表
  20. html文档 手机分页阅读,HTML书本分页(HTML book-like pagination)

热门文章

  1. C# 值类型与引用类型的异同
  2. ViewModel中C# Property自动添加OnPropertyChanged处理的小工具, 以及相应Python知识点...
  3. Windows 8 页面应用测试(1)
  4. asp.net 从客户端中检测到有潜在危险的 Request.Form 值
  5. 表格数据快速转换成SQL语句
  6. springzuul本地路由和跨服务器路由问题
  7. 自己动手用electron+vue开发博客园文章编辑器客户端【一】
  8. 【html、CSS、javascript-11】jquery-事件使用方法总结
  9. Django自身安全机制-XSS和CSRF
  10. oracle创建用户、创建表空间、授权、建表