Re: konversi domain dan password

Asfihani <asfik-yNEVPA1OLJZWk0Htik3J/[email protected]> Mon, 14 Jun 2004 12:05:20 +0700
Newsgroups gmane.mail.postfix.user.indonesian
Organization PT. Cakraperdana Proniagatama.
Message-ID <20040614050520.GH1698@nirwana>
On Sat, May 29, 2004 at 10:52:31AM +0700, Rizki Anto wrote:

> nah masalahnya sekarang bagaimana cara untuk memindahkan domain +
> user + password dari mailserver saya yang lama (menggunakan
> qmail+vpopmail) ke postfix+courier-imap+mysql, berhubung domain yang
> ada di mailserver lama ini buanyak banget...a

Script bash yang saya attach ini mungkin bisa digunakan. Note, tidak
100% sempurna, tapi bisa dicoba. Lihat pada pengecekan forward,
discript ini tidak bisa lebih dari satu destination forwar.

Script ini saat ini hanya bisa digunakan pada vanilla vpopmail (tanpa
RDBMS misalnya MySQL) dan mengacu pada struktur ditutorial
http://www.high5.net/howto.

Seperti biasa, resiko ditanggung penumpang.

 Asfihani
dumpvpopmail.sh (application/x-sh, 2 KB)
#!/bin/bash

# Bash script untuk mengekspor data mailbox di vpopmail ke format
# SQL untuk Postfix + MySQL
#
# Author: Asfihani <[email protected]>

# Direktori Vpopmail
VPOPMAILHOME=/home/vpopmail

# Output file
OUTFILE=/home/asfik/mailbox.sql

cd $VPOPMAILHOME/domains

echo "" > $OUTFILE
echo "USE postfix;" >> $OUTFILE
echo "" >> $OUTFILE
 
for domain in $(ls -1)
	do
	DOMAIN=$domain
	echo "# Domain $DOMAIN" >> $OUTFILE 
	echo "INSERT INTO domain (domain,description) VALUES ('$DOMAIN','Domain $DOMAIN');" >> $OUTFILE
	echo "" >> $OUTFILE
	echo "# Mailboxes for domain $DOMAIN" >> $OUTFILE

	for mailbox in $(cat $DOMAIN/vpasswd) 
		do
		# username format [email protected]
		USERNAME=$(echo $mailbox | awk -F: '{print $1}')@$DOMAIN
		# password format ?
		PASSWORD=$(echo $mailbox | awk -F: '{print $2}')
		# generic name format/identity
		NAME=$(echo $mailbox | awk -F: '{print $5}')
		# maildir format VIRTUAL_MAILBOX_BASE/domain.tld/username/Maildir/
		MAILDIR="$DOMAIN/$(echo $mailbox | awk -F: '{print $1}')/Maildir/"
		echo "INSERT INTO mailbox (username,password,name,maildir) VALUES ('$USERNAME','$PASSWORD','$NAME','$MAILDIR');" >> $OUTFILE
	done

	echo "" >> $OUTFILE

	# Check if there's alias/forward for specific account
	TEST=$(ls -1 $DOMAIN/.qmail-* | grep -v ".qmail-default" | wc -l)

	if [ "$TEST" -gt 0 ]; then
		for alias in $(ls -1 $DOMAIN/.qmail-* | grep -v ".qmail-default")
			do
			# Skip if file is symlink, maybe a mailing-list
			if test -h $alias ; then
				echo "Warning, file $alias probably mailing-list. Skipping..."
			else
			# address format [email protected]
			ADDRESS=$(echo $alias | sed -e "s{$DOMAIN/.qmail-{{g")@$DOMAIN
			# real mailbox format [email protected]
			GOTO=$(cat $alias | sed -e "s{$VPOPMAILHOME/domains/$DOMAIN/{{g" | sed -e "s{/Maildir/{{g")@$DOMAIN
			echo "# Alias for domain $DOMAIN" >> $OUTFILE
			echo "INSERT INTO alias (address,goto) VALUES ('$ADDRESS', '$GOTO');" >> $OUTFILE
			fi
		done
		echo "" >> $OUTFILE
	fi
done