Hướng dẫn backup mail zimbra

Việc cập nhật bản vá lỗi cho các phiên bản zimbra cũ có thể gây lỗi khó khắc phục và gây gián đoạn dịch vụ.
Đối với server zimbra đã bị hack thì việc khắc phục và cập nhật cũng rất khó khăn
Vì vậy việc lựa chọn cài đặt 1 server zimbra hoàn toàn mới và đồng bộ dữ liệu từ server zimbra cũ vẫn là phương án tối ưu nhất .

Server mail cũ : cài đặt zimbra 8.6.0
Server mail mới : cài đặt zimbra 8.8.15
Thực hiện di chuyển toàn bộ dữ liệu từ zimbra 8.6.0 sang zimbra 8.8.15
Yêu cầu : hạn chế downtime nhất có thể

Contents

  • 1. Thao tác trên server cũ
    • 1.2 Tạo thư mục chứa dữ liệu backup
    • 1.2 Xuất toàn bộ tên miền hiện có trên server mail cũ
    • 1.3 Xuất toàn bộ tài khoản mail
    • 1.4 Xuất thông tin user
    • 1.5 Xuất mật khẩu user
    • 1.6 Xuất distribution lists
    • 1.7 Xuất aliases
  • 2. Thao tác trên server mới
    • 2.1 Restore domain
    • 2.2 Restore user & password
    • 2.3 Restore distribution lists
    • 2.4 Restore aliases
  • 3. Migrating mailbox data
    • 3.1 Tại máy chủ mail cũ 
      • 3.1.1 Xuất dữ liệu hòm thư người dùng:
      • 3.1.2 Xuất dữ liệu bộ lọc mail
    • 3.2 Tại mảy chủ mới
      • 3.2.1 Nhập dữ liệu mailbox
      • 3.2.2 Nhập dữ liệu bộ lọc
  • 4. Đồng bộ lại trạng thái user
    • 4.1 Trên máy chủ cũ
    • 4.2 Trên máy chủ mới

1. Thao tác trên server cũ

Để thao tác không bị ngắt quãng do mất mạng, bạn nên thực hiện trong chế độ “screen”

1.2 Tạo thư mục chứa dữ liệu backup

# mkdir /migration # mkdir -p /migration/zimbra # chmod 777 /migration # chmod 777 /migration/zimbra # chown zimbra:zimbra /migration # chown zimbra:zimbra /migration/zimbra

1.2 Xuất toàn bộ tên miền hiện có trên server mail cũ

# su - zimbra # cd /migration/zimbra # mkdir domains # cd domains # zmprov gad | tee -a domains.txt [Xuất toàn bộ tên miền và lưu vào domains.txt]

1.3 Xuất toàn bộ tài khoản mail

# cd /migration/zimbra # mkdir accounts # cd accounts # zmprov gaaa | tee -a admins.txt ##Xuất tài khoản quản trị và lưu vào admins.txt

Xuất toàn bộ user thường và lưu vào users.txt

zmprov -l gaa | tee -a users.txt

###Nếu chỉ xuất user active thì dùng lệnh bên dưới:

zmprov -l sa "[zimbraAccountStatus=active]" | tee -a users.txt

1.4 Xuất thông tin user

# cd /migration/zimbra # mkdir account_details # cd account_details # for user in `cat ../accounts/users.txt`; do zmprov ga $user  | grep -i Name: | tee -a $user.txt ; done

Nếu câu lệnh trên không hoạt động đúng, bạn sẽ cần gõ thủ công bằng tay

Bạn sẽ thấy màn hình xuất ra font chữ bị lỗi [ nếu là tiếng việt có dấu], tuy nhiên không cần bận tâm .

1.5 Xuất mật khẩu user

# cd /migration/zimbra # mkdir passwords # cd passwords # for user in `cat ../accounts/users.txt`; do zmprov -l ga $user userPassword | grep userPassword: | awk '{ print $2}' | tee -a $user.shadow; done

1.6 Xuất distribution lists

# cd /migration/zimbra # mkdir distribution_lists # cd distribution_lists # zmprov gadl | tee -a distribution_lists.txt # for list in `cat distribution_lists.txt`; do zmprov gdlm $list > $list.txt ;echo "$list"; done

1.7 Xuất aliases

# cd /migration/zimbra # mkdir aliases # cd aliases # for user in `cat ../accounts/users.txt`; do zmprov ga $user | grep zimbraMailAlias | awk '{print $2}' | tee -a $user.txt ;echo $i ;done# find . -type f -empty | xargs -n1 rm -v [do không phải user nào cũng có aliase , vì vậy sẽ cần xoá các file .txt không chứa dữ liệu ]

2. Thao tác trên server mới

[ Đảm bảo rẳng bạn đã rsync toàn bộ các thư mục dữ liệu vừa xuất trên server cũ sang]

Để thao tác không bị ngắt quãng do mất mạng, bạn nên thực hiện trong chế độ “screen”

2.1 Restore domain

Lưu ý : nếu trên máy chủ mới, bạn đã tạo domain thì có thể bỏ qua bước này

# su zimbra# cd /migration/zimbra/domains # for domain in `cat domains.txt `; do zmprov cd $domain zimbraAuthMech zimbra ;echo $domain ;done

2.2 Restore user & password

su zimbra# cd /migration/zimbra # mkdir scripts # cd scripts # vim restore_accounts.sh ##tạo script

Nội dung script :

#!/bin/bash PASSWDS="../passwords" ACCOUNT_DETAILS="../account_details" USERS="../accounts/users.txt" for i in `cat $USERS` do export LC_ALL=vi_VN.utf8 ##Giúp import ký tự Tiếng Việt không bị lỗi font givenName=$[grep givenName: $ACCOUNT_DETAILS/$i.txt | cut -d ":" -f2] displayName=$[grep displayName: $ACCOUNT_DETAILS/$i.txt | cut -d ":" -f2] shadowpass=$[cat $PASSWDS/$i.shadow] zmprov ca $i "TeMpPa55^[]" cn "$givenName" displayName "$displayName" givenName "$givenName" zmprov ma $i userPassword "$shadowpass" done

Phân quyền và thực thi script :

# chmod 777 restore_accounts.sh # ./restore_accounts.sh

Lưu ý :Sau khi restore mật khẩu [email protected] , sẽ là mật khẩu ở máy chủ cũ.

2.3 Restore distribution lists

# cd /migration/zimbra # for lists in `cat distribution_lists/distribution_lists.txt`; do zmprov cdl distribution_lists/$lists ; echo "$lists -- done " ; done# cd /migration/zimbra/distribution_lists # vim restore_dist_lists.sh ##tạo script

Nội dung script :

#!/bin/bash for list in `cat distribution_lists.txt` do for mbmr in `grep -v '#' ./$list.txt | grep '@'` do zmprov adlm $list $mbmr echo " $mbmr has been added to $list" done done

Phân quyền và thực thi:

# chmod 777 restore_dist_lists.sh # ./restore_dist_lists.sh

2.4 Restore aliases

# cd /migration/zimbra/aliases # vim restore_aliases.sh ##tạo script

Nội dung script :

#!/bin/bash echo "Processing User accounts" for user in `cat ../accounts/users.txt` do echo $user if [ -f "./$user.txt" ]; then for alias in `grep '@' ./$user.txt` do zmprov aaa $user $alias echo "$user ALIAS $alias - Restored" done fi done echo "Processing Admin accounts" for user in `cat ../accounts/admins.txt` do echo $user if [ -f "./$user.txt" ]; then for alias in `grep '@' ./$user.txt` do zmprov aaa $user $alias echo "$user ALIAS $alias - Restored" done fi done

Phân quyền và thực thi :

# chmod 777 restore_aliases.sh # ./restore_aliases.sh

Tiến hành khởi động lại dịch vụ :

# zmcontrol restart

Tới đây , bạn có thể trỏ lại DNS , cấu hình DKIM…. sang IP của server mới
Người dùng lúc này sẽ có thể gửi và nhận mail trên server mới
Đây mới chỉ là bước đồng bộ tài khoản , vì vậy nếu user muốn truy cập và xem dữ liệu email , có thể truy cập server mail cũ theo địa chỉ //IP-servermail cũ

3. Migrating mailbox data

Bước này sẽ mất khá nhiều thời gian tuỳ thuộc vào dữ liệu email của bạn
Để thao tác không bị ngắt quãng do mất mạng, bạn nên thực hiện trong chế độ “screen”

3.1 Tại máy chủ mail cũ 

3.1.1 Xuất dữ liệu hòm thư người dùng:

# su - zimbra # cd /migration/zimbra # mkdir mailbox_data # cd mailbox_data # for user in `cat ../accounts/users.txt`; do echo "Exporting mailbox $user" ; zmmailbox -z -m $user getRestURL '/?fmt=tgz' > ./$user.tgz ; done

3.1.2 Xuất dữ liệu bộ lọc mail

# mkdir /migration/zimbra/filters # cd /migration/zimbra/filters # vim export_filters.sh ##tạo script

Nội dung script :

#!/bin/bash clear echo "Retrieve zimbra user name..." USERS=`su - zimbra -c 'zmprov -l gaa | sort'`; for ACCOUNT in $USERS; do NAME=`echo $ACCOUNT`; filter=`su - zimbra -c "zmprov ga $NAME zimbraMailSieveScript" > /tmp/$NAME` sed -i -e "1d" /tmp/$NAME sed 's/zimbraMailSieveScript: //g' /tmp/$NAME > /migration/zimbra/filters/$NAME rm /tmp/$NAME echo "Export filter for $NAME..." done echo "All filter has been export successfully"Phân quyền và thực thi : # chmod 777 export_filters.sh # ./export_filters.sh ##Lưu ý : thực thi với quyền user root

3.2 Tại mảy chủ mới

Đảm bảo rằng bạn đã rsync dữ liệu mailbox_data từ máy chủ cũ sang

3.2.1 Nhập dữ liệu mailbox

# su zimbra # cd /migration/zimbra/mailbox_data # for mailbox in `cat ../accounts/users.txt`; do zmmailbox -z -m $mailbox postRestURL "/?fmt=tgz&resolve=skip" ./$mailbox.tgz ; echo "$mailbox - done "; done

3.2.2 Nhập dữ liệu bộ lọc

# cd /migration/zimbra/filter # vim import_filters.sh ##tạo script

Nội dung script:

for file in /migration/zimbra/filters/* do StrFilter=`cat "$file"` Acc=`echo $file | cut -d "/" -f5` su - zimbra -c "zmprov ma $Acc zimbraMailSieveScript '$StrFilter'" echo "Process filter $Acc" done echo "All filter has been import successfully"

Phân quyền và thực thi

# chmod 777 import_filters.sh # ./import_filters.sh

4. Đồng bộ lại trạng thái user

Đối với các tài khoản user ở trạng thái Locked , khi đồng bộ sẽ đều chuyển thành Active
Để khắc phục bạn thao tác thêm các bước sau :

4.1 Trên máy chủ cũ

Xuất list user đang trong trạng thái Locked :

# cd /migration/zimbra
# mkdir account_status
# cd account_status
# zmprov -l sa “[zimbraAccountStatus=locked]” > user_locked.txt

4.2 Trên máy chủ mới

Đảm bảo rằng bạn đã rsync dữ liệu /migration/zimbra/account_status sang

# cd /migration/zimbra/account_status # for user in $[cat user_locked.txt] ; do zmprov modifyAccount $user zimbraAccountStatus locked ; done

Hoàn tất quá trình đồng bộ dữ liệu , tiến hành khởi động lại dịch vụ, sau đó kiểm tra hoạt động của server mới

# su zimbra # zmcontrol restart

Chủ Đề