Showing posts with label Email Server. Show all posts
Showing posts with label Email Server. Show all posts

June 24, 2016

Zimbra Hot Backup Restore Tool

Tool to create and restore backups of Zimbra open source.
Zimbra Backup and Restore "hot". By Richardson Lima
Developed in Bash Script, but currently under development in the Python programming language.

BACKUP

Script 1 This script must be run as root, it runs the script runBackupAll.sh and also sends the entire backup to a second machine.
``` echo "***************************************************" echo "* Zimbra - Backup all email accounts *" echo "***************************************************" echo"" # echo Start time of the backup = $(date +%T)
before="$(date +%s)" # echo "" ZHOME=/opt/zimbra ZBACKUP=$ZHOME/backup/mailbox echo "Generating backup files ..." su - zimbra -c "/opt/backup/SCRIPT_ZIBRA_BACKUP_ALL_ACCOUNTS/zimbra_backup_allaccounts.sh" echo "Sending files to backup all email accounts for Machine2 ..." rsync -avH $ZBACKUP root@ipaddress:/backup/zimbra_backup_accounts before2="$(date +%s)" # echo The process lasted = $(date +%T)

Calculating time

after="$(date +%s)" elapsed="$(expr $after - $before)" hours=$(($elapsed / 3600)) elapsed=$(($elapsed - $hours * 3600)) minutes=$(($elapsed / 60)) seconds=$(($elapsed - $minutes * 60)) echo The complete backup lasted : "$hours hours $minutes minutes $seconds seconds" ```
Script 2 zimbraBackupAllAccounts.sh
ZHOME=/opt/zimbra ZBACKUP=$ZHOME/backup/mailbox ZCONFD=$ZHOME/conf DATE=`date +"%a"` ZDUMPDIR=$ZBACKUP/$DATE ZMBOX=/opt/zimbra/bin/zmmailbox if [ ! -d $ZDUMPDIR ]; then mkdir -p $ZDUMPDIR fi echo " Running zmprov ... " for mbox in `zmprov -l gaa` do echo " Generating files from backup $mbox ..." $ZMBOX -z -m $mbox getRestURL "//?fmt=zip" > $ZDUMPDIR/$mbox.zip done

RESTORE

Script 3 This script must be run as root, it runs the script runRestoreAll.sh and also sends the entire backup to machine. zimbra_restore_allaccounts.sh
``` echo "***************************************************" echo "* Zimbra - Restore all email accounts *" echo "***************************************************" echo "" # echo Start Time Restore = $(date +%T)
before="$(date +%s)" # echo "" echo "Starting the process restore the backup files ..." su - zimbra -c "/opt/zimbra_backup_accounts/zimbra_restore_allaccounts.sh" before2="$(date +%s)" echo The process lasted = $(date +%T)

Calculating time

after="$(date +%s)" elapsed="$(expr $after - $before)" hours=$(($elapsed / 3600)) elapsed=$(($elapsed - $hours * 3600)) minutes=$(($elapsed / 60)) seconds=$(($elapsed - $minutes * 60)) echo "The complete restore lasted : "$hours hours $minutes minutes $seconds seconds" echo "Process completed successfully!" ```
**Script 4 zimbra_restore_allaccounts.sh ```

!/bin/bash

ZHOME=/opt/zimbra

!/bin/bash

ZHOME=/opt/zimbra

ZBACKUP=$ZHOME/backup/mailbox

ZBACKUP=/opt/zimbra_backup_accounts/mailbox ZCONFD=$ZHOME/conf DATE=date +"%a"ZDUMPDIR=$ZBACKUP/$DATE ZMBOX=/opt/zimbra/bin/zmmailbox if [ ! -d $ZDUMPDIR ]; then echo "Backups do not exist !" exit 255; fi for mbox in zmprov -l gaa do echo " Restoring files from backup $mbox ..." $ZMBOX -z -m $mbox postRestURL "//?fmt=zip&resolve=reset" $ZDUMPDIR/$mbox.zip done ```**

January 5, 2016

Script backup zimbra mail

##!/bin/bash
clear
echo Start time of the backup = $(date +%T)
before="$(date +%s)"
## Backup Format
FORMAT=tgz

## Backup location
ZBACKUP=/srv/backup/

## Folder name for backup and using date
DATE=`date +"%d%m%y"`

## Backup location separate by date
ZDUMPDIR=$ZBACKUP/$DATE

## zmmailbox location
ZMBOX=/opt/zimbra/bin/zmmailbox

### Backup Option ###

## Based on few day ago until today, example 7 days ago

#HARI=`date --date='7 days ago' +"%m/%d/%Y"`
#query="&query=after:$HARI"

if [ ! -d $ZDUMPDIR ]; then
        mkdir -p $ZDUMPDIR
fi

## Looping Account Zimbra
for account in `su - zimbra -c 'zmprov -l gaa | sort'`
do
echo "Processing mailbox $account backup..."
        $ZMBOX -z -m $account getRestURL "//?fmt=${FORMAT}$query" > $ZDUMPDIR/$account.${FORMAT}
done

echo "Zimbra Mailbox backup has been completed successfully."

echo "Sending files to backup all email accounts for Machine2 ..."
rsync -avH $ZBACKUP root@ipaddress:/backup/zimbra_backup_accounts
before2="$(date +%s)"
#
echo The process lasted = $(date +%T)
# Calculating time
after="$(date +%s)"
elapsed="$(expr $after - $before)"
hours=$(($elapsed / 3600))
elapsed=$(($elapsed - $hours * 3600))
minutes=$(($elapsed / 60))
seconds=$(($elapsed - $minutes * 60))
echo The complete backup lasted : "$hours hours $minutes minutes $seconds seconds"

January 4, 2016

Tổng hợp các lỗi phổ biến trong Mail Zimbra

Vào một ngày đẹp trời, tự nhiên hệ thống Mail của công ty bị gặp trục trặc , bạn sẽ cần phải thao tác thật nhanh sao cho hoạt động của hệ thống ổn định trở lại. Vậy đâu là nguyên nhân và cách khắc phục cho những lỗi đó, chúng ta hãy cùng tham khảo những lỗi phổ biến sau nhé.
Bước 1 : Kiểm tra service 
#su zimbra
#zmcontrol status
=> Nếu có lỗi , tiến hành restart dịch vụ bằng câu lệnh sau ”
#zmcontrol restart
= > Nếu service vẫn lỗi, các bạn hãy làm các bước tiếp theo sau
Bước 2 : Tiến hành Backup hệ thống Mail trước khi xử lí lỗi
Bước 3 : Đối chiếu lỗi với danh sách dưới đây để tìm cách khắc phục. 
 Danh sách lỗi phổ biến :
Zimbra_01 ) mta stopped + postfix is not running
Khắc phục :
#service postfix stop
#chkconfig postfix off
#su – zimbra
$zmcontrol restart
Zimbra_02 ) Ldap failed khi setup Zimbra
Khắc phục : 
#vi /etc/sudoers
Tìm đến dòng Defaults requiretty và thêm # đằng trước
#Defaults requiretty
Zimbra_03 ) Starting zmconfigd…/opt/zimbra/bin/zmconfigdctl: line 94: 17418 Killed
Khắc phục :
#su root
#vi /etc/hosts
Thêm # như dòng sau :
##::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#su zimbra
#zmcontrol restart
Zimbra_04 ) stat stoped
Khắc phục :
#vi /etc/hosts
Kiểm tra trong host đã đủ dòng sau chưa :
127.0.0.1 localhost
192.168.1.1 mail.vnitnews.com mail
Zimbra_05 ) mysql , zmconfigd is not running 
Khắc phục :
#zmcontrol stop
#rm -rf /opt/zimbra/db/data/*
#/opt/zimbra/libexec/zmmyinit
#zmcontrol restart
Zimbra_06 ) dnscache is not running
Khắc phục : 
#su zimbra
#zmdnscachectl stop
# zmprov ms `zmhostname` -zimbraServiceEnabled dnscache
# zmprov ms `zmhostname` -zimbraServiceInstalled dnscache
# zmcontrol stop
Zimbra_07 ) Không gửi được mail do IP bị Blacklist (Spam)
Khắc phục :
Kiểm tra IP Mail đang bị Blacklist tại đây
Nếu IP Mail được MxToolBox cảnh báo nhẹ ( < 3 ) tiến hành đăng ký tài khoản để gỡ Blacklist + Rà soát hệ thống Mail bằng file Log hoặc kiểm tra account lạ trong trang quản trị
Nếu bị nặng, cách nhanh nhất là đổi IP cho Mail , tiến hành rà soát hệ thống Mail bằng Log để tìm nguồn phát tán , xóa các account gửi spam , quét virus hệ thống
Zimbra_08 ) /opt/zimbra/bin/ldap: line56: kill No such process
tong-hop-cac-loi-pho-bien-trong-mail-zimbra-01
Khắc phục : 
Tiến hành kiểm tra ổ cứng cho Mail :
#df -h
Tiến hành xóa bớt logs để chạy tạm , hoặc tăng ổ cứng cho hệ thống
Zimbra_09 ) Zimbra zmconfigd not starting/running
Khắc phục : 
#su root
#yum install which
#su zimbra
#rm -rf /opt/zimbra/log/zmconfigd.pid
#zmconfigdctl start
Zimbra_10 ) Diffie-Hellman key khi truy cập 
#su zimbra#zmprov mcf +zimbraSSLExcludeCipherSuites TLS_DHE_RSA_WITH_AES_128_CBC_SHA
#zmprov mcf +zimbraSSLExcludeCipherSuites TLS_DHE_RSA_WITH_AES_256_CBC_SHA
#zmprov mcf +zimbraSSLExcludeCipherSuites SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
#zmmailboxdctl restart

December 23, 2015

Backup of Zimbra MailBox using zmmailbox

This is a short script I use to backup the Zimbra mailbox content for my users.
This has been used on a Zimbra Collaboration Server (ZCS Open Source Edition) 7.2 installation, but should work on earlier versions as well.
I use another script to backup the whole Zimbra installation, but that might be another blog post.

#!/bin/bash -x
# Backup of Zimbra mailboxes using zmmailbox
# Restore of mailbox should be performed using:
# /opt/zimbra/bin/zmmailbox -z -m user@host postRestURL -u https://HOST "//?fmt=tgz&resolve=skip" mailbox-name-date.tgz
BackupFolder="/backup/zimbra"
MailBox="user1 user2 user3 userN"
DateToday=`date -I`
for name in $MailBox
do
sudo -u zimbra /opt/zimbra/bin/zmmailbox -z -m $name@pario.no getRestURL "//?fmt=tgz" > mailbox-$name-$DateToday.tgz
done
The backup files are named mailbox-user1-20120802.tgz mailbox-user2-20120802.tgz …

Cold backup for the Open Source Edition of Zimbra

Today I’ve setup a cold backup routine to backup my Zimba installation running on my Debian (Etch) 4.0 server that is in full production now for my private domains. This is a slightly modified backup script for the Open Source Edition of Zimbra from the Zimbra Wiki. Please note that the script does a full backup every time it’s being run!
#!/bin/bash

# Zimbra Backup Script
# Requires sftp to run
# This script is intended to run from the crontab as root
# Free to use and free of any warranty!  Daniel W. Martin, 9 Sept 2007

# Live sync before stopping Zimbra to minimize sync time with the services down
# Comment out the following line if you want to try single cold-sync only
rsync -avHK --delete /opt/zimbra/ /backup/zimbra

# which is the same as: /opt/zimbra /backup
# Including --delete option gets rid of files in the dest folder that don't exist at the src
# this prevents logfile/extraneous bloat from building up overtime.

# Stop Zimbra Services
sudo -u zimbra /opt/zimbra/bin/zmcontrol stop
sleep 40

# Sync to backup directory
rsync -avHK --delete /opt/zimbra/ /backup/zimbra

# Restart Zimbra Services
sudo -u zimbra /opt/zimbra/bin/zmcontrol start

# Create a txt file in the backup directory that'll contain the current Zimbra
# server version. Handy for knowing what version of Zimbra a backup can be restored to.
sudo -u zimbra zmcontrol -v > /backup/zimbra/conf/zimbra_version.txt
# or examine your /opt/zimbra/.install_history

# Create archive of backed-up directory for offsite transfer
# cd /backup/zimbra
ZimbraVersion=zimbraBackup-zcs-5.0.1_GA_1902.DEBIAN4.0.20080109200914

tar -zcf /backup/$ZimbraVersion-$(date +"%Y-%m-%d").tgz -C /backup/zimbra .

# Transfer file to backup server using passwordless sftp
scp zimbraBackup-zcs-5.0.1_GA_1902.DEBIAN4.0.20080109200914-$(date +"%Y-%m-%d").tgz username@example.com:/path/to/backupfolder/
I’ve described passwordless ssh/sftp session in a earlier post so I won’t describe the last line of the backup script.

October 28, 2015

Một số kinh nghiệm khi thiết lập email server

Sau 1 thời gian  vật lộn với postfix + dovecot để tạo được email server cho chính bản thân mình, tôi cũng đã học được khá nhiều điều và bên dưới là một số kinh nghiệm mà tôi nghĩ là quan trọng nhất để xây dựng được email server cơ bản tốt, cơ bản tốt ở đây là có thể gửi, nhận email mà không bị gmail đánh dấu là spam chẳng hạn :)
Nếu bạn thấy bài viết này dài quá mà bạn khá lười thì có thể dùng Zoho Mail với tài khoản miễn phí được sử dụng 10 users.

Bước 1: cài đặt postfix + dovecot

Bạn có thể sử dụng link sau để cài đặt postfix+ dovecot, spamassagin bạn có thể bỏ qua để cài sau này cũng được.
Trong bước này cần chú ý FQDN, nếu host name của bạn là server1 với domain làabc.com thì nên thiết lập FQDN là server1.abc.com.
Ví dụ: hostname của tôi là bachvtuan với domain của tôi là dethoima.com nên FQND sẽ là bachvtuan.dethoima.com. Tôi thiết lập /etc/hosts sẽ như sau
128.199.202.90 chính là ip của host.
Bạn cũng có thể confirm bằng cách dùng lệnh hostname -f để hiển thị FQDN.
Xong bước này bạn có thể kiểm tra email server có hoat động không bằng cách dùng lệnh:
993 chính là cổng IMAP nhận email.

Bước 2: thiết lập reserver domain.

Thông thường khi trỏ domain về host thì chỉ mới 1 chiều đó là chiều từ domain tới ip nên khi tôi dùng lệnh ping thì sẽ như sau
Nhưng nếu bạn dùng lệnh host ( bạn thay bằng ip của bạn )
thì có thể xuất hiện thông báo
Đơn giản vì ptr record của bạn không phải là domain hợp lệ, bạn nên update ptr record thành tên domain của bạn, Tôi dùng digitalOcean nên sau khi đổi ptr record thì sẽ xuất hiện như thế này:
update prt record
và khi thực hiện câu lệnh trên sẽ ra kết quả như sau:
Xong bước này xem như xong reserver domain.

Bước 3: Kiểm tra mọi lỗi email + reserver domain:

Bạn vào link http://mxtoolbox.com/SuperTool.aspx#, đây là website có nhiều chức năng kiểm tra server khá hay, bạn nhập domain của bạn và chọn mục là test email server.
Nếu mọi chuyện ok thì sẽ xuất hiện như hình bên dưới.
email
mxtoolbox check email

Bước 4: Thiết lập email cho client software( tùy chọn nếu bạn không  dùng  )

Tới đây thì bạn có thể sử dụng email client để gửi email giữa các user trong domain của bạn, bạn cũng gửi được ra ngoài tới gmail chẳng hạn nhưng chắc chắn là sẽ vào danh mục spam :) , cái này tôi sẽ hướng dẫn pass trong các bước tiếp theo.
1 điều chú ý ở đây là nếu bạn dùng chứng chỉ https tự tạo thì thunderbird sẽ bắt và không cho phép sử dụng, bạn nên  exception 2 links đó là :
yourdomain:993 ( cổng IMAP, nhận email )
yourdomain:25 ( cổng SMTP, gửi email   )
Đối với outlook thì bạn không cần thực hiện bước này.

Bước 5: Thiết lập để email không dán nhãn spam khi gửi ra ngoài

Bạn gửi email từ domain của bạn tới gmail nếu chỉ sử dụng các bước trên thì 99% là sẽ không xuất hiện trên inbox của người tới vì bạn chưa làm một số đều cần thiết sau:

SPF Check

là viết tắt của từ Sender Policy Framework, bạn thêm txt record với giá trị sau:
label: @
Giá trị : “v=spf1 mx a  -all”
Record này sẽ xác thực thông qua 2 kênh mà mx record và a record.

Sign mỗi email gửi đi bằng DKIM:

Dkim( Domain key indentify mail ) là công cụ để xác thực email gửi đi thông dụng, bạn có thể xem link này để cài đặt OpenDKIM
Sau khi thực hiện xong các bước trên, bạn có thể kiểm tra kết quả bằng cách gửi email tới check-auth@verifier.port25.com
Nếu cấu hình đúng thì email trả về sẽ như sau :
Result of check auth

Bạn có thể dễ dàng thấy SPF check và DKIM check đã passed.
Giờ cơ hội gửi email tới gmail nằm trong inbox đã là 50/50, bạn nhớ gửi email test đừng có những từ dễ bị gmail nghi là spam ví dụ như “spam, won, congratulation,… “, nếu email của bạn vẫn nằm trong spam thì qua bước tiếp theo, còn không thì có thể dừng lại :)

Bước 6:  Sử dụng mandrillapp.com để làm cổng smpt 

Email của bạn nằm trong spam có thể có nhiều lý do khác mặc dù bạn đã ký DKIM hay xác thực SPF, bạn có thể xem thêm một số lý do ở đây.
Mandrill sẽ giúp bạn vượt qua điều đó, sơ lược nó sẽ là cổng smtp thay thế cổng gửi mail mặc định của chúng ta và cổng này hoạt động khá tốt để google hay microsoft, yahoo không đánh dấu email của chúng ta nằm diện spam,  Mandrilapp hiện tại không cho user từ Việt Nam( đi đâu cũng nghe dân Việt Nam ) nên bạn cần phải fake ip qua nước ngoài để đăng ký, tài khoản free cho phép gửi 12k email  mỗi tháng, nếu bạn có nhu cầu lớn hơn thì có thể mua thêm.
Khi sử dụng maindrillapp thì bạn có thể quan tâm cách thiết lập cho email client soft ởđây .
Kết: 
Hiện tại tôi cũng đang dùng mandrillapp để gửi và nhận email sử dụng IMAP của postfix, mọi chuyện cũng khá ổn, sẽ cập nhật nếu có cách nào tốt hơn và dễ dàng hơn 
nguồn: https://dethoima.info/mot-so-kinh-nghiem-khi-thiet-lap-email-server/