打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Perform silent/unattended iRedMail installation

iRedMail will store configrations in file iRedMail-x.y.z/config duringinstallation, and ask you whether to use it for installation directlyor create a new one.

You can create a sample config file by executing iRedMail installer:

# bash iRedMail.sh

After config wizard dialogs, you will find file config under iRedMail rootdirectory. For example, /root/iRedMail-0.8.7/config. it will ask whether tostart installation or not, you can cancel it if you want.

You can copy this config file to deploy as many servers as you want, changethe hard-coded passwords in it if you want.

How to deploy a new server with sample config file:

  • Copy sample config file to new server, e.g. /root/iRedMail-0.8.7/config.
  • Execute iRedMail installer with shell variables:
# AUTO_USE_EXISTING_CONFIG_FILE=y     AUTO_INSTALL_WITHOUT_CONFIRM=y     AUTO_CLEANUP_REMOVE_SENDMAIL=y     AUTO_CLEANUP_REMOVE_MOD_PYTHON=y     AUTO_CLEANUP_REPLACE_FIREWALL_RULES=y     AUTO_CLEANUP_RESTART_IPTABLES=y     AUTO_CLEANUP_REPLACE_MYSQL_CONFIG=y     AUTO_CLEANUP_RESTART_POSTFIX=n     bash iRedMail.sh

Sample Deployment

Here's how i preform iRedMail tests every day with VMware Fusion on Mac OS X,all are completed automatically with a shell command.

  • Install a clean, basic/minimal OS (Debian/CentOS/OpenBSD/FreeBSD, etc), setproper hostname, configure network, then shut down this server and create aVMware snapshot named Latest. The snapshot name will be used in my shellscript, it needs a snapshot name to reverse VM to the clean OS.

  • Revert VM to the latest snapshot (a clean, basic, minimal OS) with VMwarecommand line tool vmrun.

  • Start this VM with vmrun, sleep 30 (or 60) seconds waiting for OS start up.

  • Detect network connection to this VM, if it's up, upload required files with scp:

  • the latest development edition of iRedMail
  • source tarballs required by iRedMail (Roundcube, iRedAdmin, iRedAPD, etc)
  • downloaded RHEL/CentOS/Debian/Ubuntu/OpenBSD binary packages, FreeBSD distfiles etc. The most important one is a prepared iRedMail config file: iRedMail-x.y.z/config.

  • Create/Update iRedMail installation status file: iRedMail-x.y.z/.status to skip downloading source tarballs, etc.

  • Perform installation via ssh like this:

ssh root@[SERVER] "cd /root/iRedMail/ && IREDMAIL_DEBUG='NO' AUTO_USE_EXISTING_CONFIG_FILE=y AUTO_INSTALL_WITHOUT_CONFIRM=y AUTO_CLEANUP_REMOVE_SENDMAIL=y AUTO_CLEANUP_REMOVE_MOD_PYTHON=y AUTO_CLEANUP_REPLACE_FIREWALL_RULES=y AUTO_CLEANUP_RESTART_IPTABLES=y AUTO_CLEANUP_REPLACE_MYSQL_CONFIG=y AUTO_CLEANUP_RESTART_POSTFIX=n bash iRedMail.sh"
  • Reboot server.

It should complete in 2-3 minutes (uploading binary packages takes most time),then i got a working iRedMail server. I do this many times every day.

I have 5 prepared iRedMail config files for different backends: OpenLDAP,MySQL, MariaDB, PostgreSQL, ldapd (OpenBSD only). i run my script with anoption to install iRedMail with specified backend like below, the script willupload proper config file to server:

# bash auto.centos7.sh ldap# bash auto.centos7.sh mysql# bash auto.centos7.sh pgsql# bash auto.ubuntu14.sh mariadb# bash auto.openbsd55.sh ldapd

Below is file of auto.centos7.sh mentioned above, it prepares VMware virtualmachine, then execute another script c7.sh to perform the real installation.

#!/usr/bin/env bash# File: auto.centos7.sh[ X"$#" != X'1' ] && echo 'No backend? ldap, mysql, pgsql' && exit 255export backend="${1}"export VMRUN='vmrun -T fusion'export VM_USER_ROOT='root'export VM_HOSTNAME='c7'export VM="/Users/zhb/vm.packages/vm/CentOS-7-x86_64.vmwarevm/CentOS-7-x86_64.vmx"echo "* Revert to the latest snapshot."${VMRUN} revertToSnapshot ${VM} Latestecho "* Start VM."${VMRUN} start ${VM}echo "* Sleep 30 seconds to wait VM start up."sleep 30echo "* Detect network status with ssh."while :; do    ssh ${VM_USER_ROOT}@${VM_HOSTNAME} "exit"    if [ X"$?" == X'0' ]; then        break    else        sleep 5    fidoneecho "* Start testing iRedMail."sh ${VM_HOSTNAME}.sh ${backend}
#!/usr/bin/env bash# File: c7.sh[ X"$#" != X'1' ] && echo 'No backend?' && exit 255backend="${1}"# hostname of your VMware virtual machine set in Mac OS X /etc/hosts.HOST="c7"echo 'copying iRedMail ...'scp -r ~/projects/iredmail/iRedMail root@${HOST}:~ >/dev/nullecho 'copying pkgs/misc ...'scp -r misc root@${HOST}:~/iRedMail/pkgs/ >/dev/nullscp -r config.${backend} root@${HOST}:~/iRedMail/config >/dev/nullecho 'copying archives ...'scp -r rhel/7/yum root@${HOST}:/var/cache/ >/dev/nullecho 'updating .status ...'ssh root@${HOST} "echo export status_check_new_iredmail='DONE' > /root/iRedMail/.status"ssh root@${HOST} "echo export status_fetch_pkgs='DONE' >> /root/iRedMail/.status"ssh root@${HOST} "echo export status_fetch_misc='DONE' >> /root/iRedMail/.status"ssh root@${HOST} "echo export status_cleanup_update_clamav_signatures='DONE' >> /root/iRedMail/.status"ssh root@${HOST} "cd /root/iRedMail/ && yum clean metadata && AUTO_USE_EXISTING_CONFIG_FILE=y AUTO_INSTALL_WITHOUT_CONFIRM=y AUTO_CLEANUP_REMOVE_SENDMAIL=y AUTO_CLEANUP_REMOVE_MOD_PYTHON=y AUTO_CLEANUP_REPLACE_FIREWALL_RULES=y AUTO_CLEANUP_RESTART_IPTABLES=y AUTO_CLEANUP_REPLACE_MYSQL_CONFIG=y AUTO_CLEANUP_RESTART_POSTFIX=n bash iRedMail.sh"ssh root@${HOST} "/usr/bin/systemctl stop firewalld"#ssh root@${HOST} "mkdir /root/pro && cp /var/www/iredadmin/settings.py /root/pro/"#scp -r clamav/* root@${HOST}:/var/lib/clamav/#ssh root@${HOST} "chown clamupdate:clamupdate /var/lib/clamav/*"ssh root@${HOST} "echo 'reboot'; reboot"

All documents are available in BitBucket repository, and published under Creative Commons license. You can download the latest version for offline reading. If you found something wrong, please do contact us to fix it.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
linux下安装Anaconda以及配置jupyter的远程访问
centos挂载ntfs移动硬盘
用 vagrant 快速部署 docker 虚拟机集群
Elasticsearch数据库 | Elasticsearch-7.5.0应用搭建实战
centos安装redis
Docker深入浅出系列 | 容器初体验
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服