设为首页 收藏本站
查看: 3747|回复: 0

[经验分享] Postfix邮箱(十四):备份还原、邮箱转移、主从热备

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-30 08:20:25 | 显示全部楼层 |阅读模式
1、备份与恢复
(1)备份
创建备份目录

1
[iyunv@mail ~]# mkdir /home/bak



MYSQL备份
1
[iyunv@mail ~]# mysqldump -uroot -p123456 extmail>  /home/bak/extmail.sql



邮件备份
1
2
[iyunv@mail ~]# tar -zcvf /home/bak/yourmail.tar.gz /home/domains/yourmail.com
[iyunv@mail ~]# tar -zcvf /home/bak/seconed.tar.gz /home/domains/seconed.cn



WEB备份
1
[iyunv@mail ~]# tar -zcvf /home/bak/extsuite.tar.gz /var/www/extsuite



DSPAM备份
1
2
[iyunv@mail ~]# mysqldump -uroot -p123456 dspam>  /home/bak/dspam.sql
[iyunv@mail ~]# tar -zcvf /home/bak/dspam_data.tar.gz /usr/local/dspam/var/dspam/data



配置备份
1
2
[iyunv@mail ~]# cp /etc/postfix/*.cf /home/bak/
[iyunv@mail ~]# cp /etc/httpd/conf.d/ /home/bak/



打包备份文件,可转储至其他地方
1
[iyunv@mail ~]# tar -zcvf /home/bak20141229.tar.gz /home/bak



(2)还原    
  MYSQL恢复
1
[iyunv@mail ~]# mysql -uroot -p123456 < /home/bak/extmail.sql



  邮件恢复
1
2
[iyunv@mail ~]# tar zxvf /home/bak/yourmail.tar.gz -C /home/domains
[iyunv@mail ~]# tar zxvf /home/bak/seconed.tar.gz -C /home/domains



  修改权限
1
[iyunv@mail ~]# chown -R vmail.vmail /home/domains



(3)远程备份
说明:scp命令基于SSH,可以在linux之间复制文件和目录。
在远程服务器上创建备份目录
1
[iyunv@mail ~]# mkdir /home/mailbak



在主服务器复制备份文件到远程服务器
1
[iyunv@mail ~]# scp /home/bak/yourmail.tar.gz  root@10.188.1.86:/home/mailbak/



或者将所有备份的压缩包复制过去
1
[iyunv@mail ~]# scp /home/bak20141229.tar.gz  root@10.188.1.86:/home/mailbak/



也可以直接将原目录复制过去,但原目录文件正在被操作的话就不好了
1
[iyunv@mail ~]# scp -r /home/domains/yourmail.com  root@10.188.1.86:/home/mailbak/



看到这里,就有人会想添加计划任务实现定时备份了,下文有更好的实时备份方案。



2、邮箱转移
说明:在前面的各种测试了,已经提到了另一个邮箱服务器 mail.eplantstore.com(10.188.1.86);
同样使用postfix+extmail搭建的,不需要太复杂,完成前台+后台+多域名配置就行了。

任务:将原服务器1.83中的seconed.cn域转移到1.86上。
(1)先来看看原服务器上的seconed.cn
wKiom1SgtDfATH76AAKnahU2Ey4061.jpg
wKioL1SgtOnw09AAAACTw1iIU7A901.jpg
wKiom1SgtDfA2bzdAABdpnAC7E8212.jpg
wKioL1SgtOnj3faIAAC37Or7oP0495.jpg
结论:目前seconed.cn域中只有一个test2用户,有3封邮件。

(2)转移用户账号
1
2
3
[iyunv@mail ~]# mysqldump -uroot -p123456 -t -w "domain='seconed.cn'" extmail > /home/seconed.sql
mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `manager`
WHERE domain='seconed.cn'': Unknown column 'domain' in 'where clause' (1054)



说明:
-t表示不增加create table和drop table语句,导入时只新增备份中的数据;
-w表示添加条件 where,筛选出domain列的值为seconed.cn的数据;
报错意思是manager表中没有domain列,没关系,不用理会;
可以查看seconed.sql文件内容,确定没有drop table,且数据都是seconed.cn域的。

远程复制到目标服务器上:
1
2
3
[iyunv@mail ~]# scp /home/seconed.sql root@10.188.1.86:/home/
root@10.188.1.86's password:
seconed.sql                                   100% 2208     2.2KB/s   00:00



(以下是1.86上的操作)
谨慎起见,先备份下目标服务器上的数据库:
1
[iyunv@mail ~]# mysqldump -uroot -p123456 extmail>  /home/extmail.sql



在目标服务器上导入数据:
1
[iyunv@mail ~]# mysql -uroot -p123456 extmail < /home/seconed.sql



了解原理并清楚的知道不会破坏目标服务器的数据库后,可以一步到位的转移:
1
[iyunv@mail ~]# mysqldump -uroot -p123456 -t -w "domain='seconed.cn'" extmail | mysql --host=10.188.1.86 -C extmail



说明:-C表示压缩传输,目标服务器数据库extmail必须已存在。
(3)登陆eplantstore.com后台页面检查结果
wKiom1Sgwq3ApvuqAACab6NJB_w494.jpg
结论:账号转移成功,如果你想再次导入seconed.sql是不行的,因为已经存在,除非先删除。
(4)转移邮件目录
1
[iyunv@mail ~]# scp -r /home/domains/seconed.cn root@10.188.1.86:/home/domains/



(5)转移配置文件
前提是目标服务器配置了多域名访问
主要是目标服务器的CGI文件替换:
1
2
3
4
5
6
[iyunv@mail ~]# cd /var/www/extsuite/extmail
[iyunv@mail extmail]# wget http://www.mzone.cc/wp-content/u ... tmail-cgi-ModifyBy-[/url]
[iyunv@mail extmail]# unzip extmail-cgi-ModifyBy-www.mzone_.cc.zip
[iyunv@mail extmail]# mv cgi cgi-bak
[iyunv@mail extmail]# mv extmail-cgi-ModifyBy-www.mzone.cc  cgi
[iyunv@mail extmail]# chmod 755 -R cgi



原服务器进行配置文件转移:
1
2
3
4
[iyunv@mail ~]# scp /var/www/extsuite/extmail/seconed.cf root@10.188.1.86:/var/www/extsuite/extmail/
[iyunv@mail ~]# scp /var/www/extsuite/extmail/globabook-seconed.cf root@10.188.1.86:/var/www/extsuite/extmail/
[iyunv@mail ~]# scp -r /var/www/extsuite/extmail/lang/seconed root@10.188.1.86:/var/www/extsuite/extmail/lang/
[iyunv@mail ~]# scp -r /var/www/extsuite/extmail/html/seconed root@10.188.1.86:/var/www/extsuite/extmail/html/



说明:如果没有配置多域名访问就不用转移配置文件了,一切使用默认配置。
(6)修改目标服务器文件属主
如果目标服务器上的用户不是vmail,而是vuser.vgroup或其他的,请修改成正确的。

1
2
[iyunv@mail ~]# chown vmail.vmail -R /var/www/extsuite/extmail/cgi
[iyunv@mail ~]# chown vmail.vmail -R /home/domains/seconed.cn



(7)测试访问结果
wKiom1SgvVSAdAD-AAM0JsBs_ig193.jpg

wKioL1SgvgbgNtCjAAMAxyFRp5I179.jpg
说明:通过IP访问只会应用默认配置。
(8)修改域名解析
我用的是内部DNS服务器,你如果没有可以修改你的电脑HOST文件。
wKioL1SgvvDwO5Z-AAA4AziQffk500.jpg
wKiom1SgwB_i3Oj-AANKS3ea5LM957.jpg
结论:只有通过域名访问才能应用到指定配置文件,在CMD中执行nslookup mail.seconed.cn以确认解析是否指向目标服务器10.188.1.86。



3、主从热备(rsync)
rsync的特点:定时的同步目录的更新文件,而不是每次全部的同步;
保持文件的属主,时间,大小等属性;同步速度快。

(1)服务端(mail.yourmail.com 10.188.1.83)
安装rsync同步工具:
1
[iyunv@mail ~]# yum install -y rsync



创建用于同步的系统用户:
1
2
3
[iyunv@mail ~]# useradd beifen
[iyunv@mail ~]# passwd  beifen
123456



创建同步配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[iyunv@mail ~]# vi /etc/rsyncd.conf
uid = beifen
gid = beifen
use chroot = yes
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[domains]
#同步邮件目录
path = /home/domains/
auth users = beifen
uid = vmail
gid = vmail
secrets file = /etc/rsyncd.secrets
read only = no
hosts allow = 10.188.1.86
[mysql]
#同步mysql的extmail数据库文件(账号信息)
path = /var/lib/mysql/extmail/
auth users = beifen
uid = mysql
gid = mysql
secrets file = /etc/rsyncd.secrets
read only = no
hosts allow = 10.188.1.86



创建rsyncd的密码文件:
1
2
[iyunv@mail ~]# vi /etc/rsyncd.secrets
beifen:123456



修改密码文件权限:
1
[iyunv@mail ~]# chmod 600 /etc/rsyncd.secrets



    如果是root用户运行rsync进程,该文件属主必须是root,否则报错
1
secrets file must be owned by root when running as root (see strict modes)



添加域名解析:

1
[iyunv@mail ~]# echo "10.188.1.86 mail.eplantstore.com" >> /etc/hosts



    不添加域名解析会报错
1
name lookup failed for 10.188.1.86: Name or service not known



设置防火墙:
1
2
[iyunv@mail ~]# iptables -I INPUT -p tcp --dport 873 -j ACCEPT
[iyunv@mail ~]# service iptables save



启动程序:
1
2
3
4
5
6
7
8
[iyunv@mail ~]# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
[iyunv@mail ~]# echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.d/rc.local
[iyunv@mail ~]# ps aux|grep rsync
root     43015  0.0  0.0 107616   672 ?        Ss   11:22   0:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
root     43017  0.0  0.0 103248   836 pts/1    S+   11:22   0:00 grep rsync
[iyunv@mail ~]# netstat -tnlp |grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      43015/rsync         
tcp        0      0 :::873                      :::*                        LISTEN      43015/rsync




(2)客户端(mail.eplantstore.com 10.188.1.86)
安装rsync同步工具:
1
[iyunv@mail ~]# yum install -y rsync



创建密码文件:
1
2
3
4
[iyunv@mail ~]# vi /etc/rsync.secrets
#只存放了一个密码
123456
[iyunv@mail ~]# chmod 600 /etc/rsync.secrets



设置计划任务,每10分钟更新:
1
2
3
[iyunv@mail ~]# crontab -e
*/10 * * * *  rsync -vzrtopg --progress --password-file=/etc/rsync.secrets beifen@mail.yourmail.com::domains /home/domains
*/10 * * * *  rsync -vzrtopg --progress --password-file=/etc/rsync.secrets beifen@mail.yourmail.com::mysql /var/lib/mysql/extmail



参数说明:
-v表示verbose详细显示
-z表示压缩
-r表示recursive递归
-t表示保持原文件创建时间
-o表示保持原文件属主
-p表示保持原文件的参数
-g表示保持原文件的所属组


这里使用的用户是beifen,和服务端配置文件中设置的一致,如果写成其他的会报错:
1
auth failed on module domains from mail.eplantstore.com (10.188.1.86): unauthorized user



(3)手动执行同步
1
2
3
4
[iyunv@mail extmail]# rsync -vzrtopg --progress --password-file=/etc/rsync.secrets beifen@mail.yourmail.com::domains /home/domains
#显示一大堆文件传输过程
sent 4104 bytes  received 9643567 bytes  1135020.12 bytes/sec
total size is 14251668  speedup is 1.48



可以看到第一次同步传输了9643567字节。

1
2
3
4
5
[iyunv@mail extmail]# rsync -vzrtopg --progress --password-file=/etc/rsync.secrets beifen@mail.yourmail.com::domains /home/domains
receiving incremental file list
yourmail.com/test/Maildir/tmp/
sent 140 bytes  received 14820 bytes  2720.00 bytes/sec
total size is 14251668  speedup is 952.65



可以看到第二次同步只更新了test用户的临时目录,确认是增量备份。
(4)查看日志
1
2
3
4
5
[iyunv@mail ~]# tailf /var/log/rsyncd.log
2014/12/29 13:49:14 [43498] connect from mail.eplantstore.com (10.188.1.86)
2014/12/29 13:49:14 [43498] rsync on domains/ from beifen@mail.eplantstore.com (10.188.1.86)
2014/12/29 13:49:15 [43498] building file list
2014/12/29 13:49:17 [43498] sent 9643584 bytes  received 4105 bytes  total size 14251668



(5)检查同步结果
1
2
3
4
5
[iyunv@mail extmail]# ll /home/domains/
总用量 0
drwx------. 4 vmail vmail  34 11月 26 15:15 eplantstore.com
drwxr-xr-x. 3 vmail vmail  18 12月 11 16:58 seconed.cn
drwxr-xr-x. 4 vmail vmail  34 12月  1 16:24 yourmail.com




数据库文件同步最好先删除客户端的再执行同步,否则会因为占用问题部分同步不过来:
1
[iyunv@mail extmail]# rm -f /var/lib/mysql/extmail/*




同步完成后,extman后台就得用root@yourmail.com账号登陆了,且eplantstore.com域没有了;
现在完全跟服务器的数据一致了。

(6)问题
beifen用户只是用来客户端和服务端认证用的,配置文件rsyncd.conf中模块的UID和GID才是对目录

进行操作的用户,如果设置的用户对源目录来说是other,则要给other r+x权限,即修改同步目录权限为755(执行前最好先备份下):
1
2
[iyunv@mail ~]# chmod 755 -R /home/domains/
[iyunv@mail ~]# chmod 755 -R /var/lib/mysql/extmail/



否则报错:
1
rsync: link_stat "." (in domains) failed: Permission denied (13)




"."表示目录中包含当前目录链接".",没有755权限(主要是最后的5-other用户权限)

因此最好设置UID和GID与源目录属主和属组一致,这样也能保护源目录的安全性。
如果你改权限改乱了,可以使用以下命令只修改目录和子目录的权限:
1
[iyunv@mail domains]# find /home/domains -type d -exec chmod 760 {} ;



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-39641-1-1.html 上篇帖子: Postfix邮箱(十三):限制策略 下篇帖子: gmail,hotmail,yahoo 怎么注册不了?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表