| 
		
			
			 
		 | 
		
			
			 www.lissyara.su
—> статьи
—> FreeBSD
—> почтовые системы
—> imapsync
			
			
			 
			
			
 imapsync - перенос почты с одного сервера на другой.
			
			
			
			Автор: lissyara. 
			
			
       Собрал новую мыльницу - exim и dovecot. Всё пучком, но втал вопрос о переносе почты и юзеров со старого сервера на новый. С юзерами решилось просто - на стером была какая-то дикая связка cyrus-imap и exim. Дикость заключалась в том, что для зваедения юзера требовалось руками поправить БД MySQL, зайти в cyradmin (типа WEB-интерфейс) создать директорию, зайти с шелла - завести пользователся при помощи saslpasswd2... Финиш... Конечно, может когда-то всё это и работало по человечески, но мне досталось именно в таком виде, и на понимание принципа работы ушло немало времени и нервов :))) Перенос облегчался наличием БД с нешифрованными паролями. Поэтому был сделан дамп куска базы, в котором были только нужные пользователи, и этот самый дамп размещён во временной таблице. После чего два таких запроса: 
 
		
INSERT INTO `mailbox`
(`username`, `password`, `name`, `maildir`, `domain`,
`created` ,`modified`, `active`)
SELECT 
LCASE(`alias`), `password`, LCASE(`login`),
LCASE(
	CONCAT(
		SUBSTRING(`alias`, POSITION("@" IN `alias`)+1,
		LENGTH(`alias`)),'/',
		SUBSTRING(`alias`, 1,POSITION("@" IN `alias`)-1),'/'
		)
	),
LCASE(
	SUBSTRING(`alias`,
	POSITION("@" IN `alias`)+1,
	LENGTH(`alias`))
	),
NOW(),NOW(),'1'
FROM `users_old`
WHERE SUBSTRING(
	`alias`, POSITION("@" IN `alias`)+1,LENGTH(`alias`)
	)='domain-name.su';
--
INSERT INTO `alias`
(`address`,`goto`,`domain`,`created`,`modified`,`active`)
SELECT 
LCASE(`username`), LCASE(`username`), `domain`,NOW(),NOW(),'1'
FROM `mailbox` WHERE `domain`='domain-name.su'
  |   Перенесли всех пользователей. Для переноса самой почты, была заюзана программа из портов - imapsync, и скриптик на шелле, такого вида: 
 
		
#!/bin/sh
# Скрипт миграции пользователей с cyrus-imap на dovecot
# Параметры подключения к MySQL
mysql_host="localhost"
mysql_user="exim"
mysql_passwd="exim"
mysql_db="exim"
# Достаём из БД список пользователей
# исходный хост
src_host="$1"
# куда переносим
dst_host="$2"
# домен который мигруется
user_domain="$3"
# mysql-клиент
mysql="/usr/local/bin/mysql --user=${mysql_user} \
--password=${mysql_passwd} \
--database=${mysql_db} --host=${mysql_host} --batch"
# программа миграции
imapsync="/usr/local/bin/imapsync"
# временный файл
file_tmp="/tmp/user.passwd"
# достаём юзеров и в цикле переносим их почту
case "$4" in
        execute)
                ${mysql} --execute="SELECT * FROM \`mailbox\` \
                WHERE \`domain\`='${user_domain}'" |
                {
                while read user_string
                do
                #echo ${user_string}
                old_username="`echo ${user_string} | awk '{print $3}'`"
                new_username="`echo ${user_string} | awk '{print $1}'`"
                user_passwd="`echo ${user_string} | awk '{print $2}'`"
                # создаём файл с паролем:
                echo ${user_passwd} > ${file_tmp}
                # перетаскиваем почту
                echo "Миграция пользователя ${new_username}"
                ${imapsync} --host1 ${src_host} --user1 ${old_username} \
                --passfile1 ${file_tmp} --host2 ${dst_host} --user2 \
                ${new_username} --passfile2 ${file_tmp}
                # Удаляем файл паролей
                rm -f ${tmp_file}
                done
                }
                ;;
        *)
                echo ""
                echo "Usage: `basename $0` {src_host dst_host domain execute}"
                echo ""
                exit 64
                ;;
esac
  |   Запускаем: 
 
		
./mail_migration.sh 200.200.200.200 127.0.0.1 domain-name.su execute
  |   И долго-долго ждём :))) На перенос 3Gb почты ушло часов пять-шесть... Скриптик перловый, работает медленно :( В-общем-то не страшно, всё равно делается это не днём. 
 
P.S. Это даже не руководство к действиям, а просто пример, как можно сделать....
 
  
			
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=5469.
  
			
			
			
			
				
					| 
						 размещено: 2006-08-02, 
				последнее обновление: 2006-08-02, 
				автор: lissyara 
					 | 
					
						
		
					 | 
				 
			 
			
			
			
					
 
	 
	
  
			
			
			 
		 | 
		
			
			 
		 | 
		
 
 
			
			
2014-07-27, lissyara 
gmirror  
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
 
2013-08-20, zentarim 
Scan+Print server FreeBSD 9 
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
 
2011-11-20, BlackCat 
Разъём на WiFi-карту 
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
 
2011-09-14, manefesto 
Настройка git+gitosis 
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh 
 
2011-08-14, zentarim 
Wi-FI роутер + DHCP + DNS 
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
 
2011-06-15, -ZG- 
Охранная система на FreeBSD+LPT 
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
 
2011-03-13, terminus 
ng_nat 
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
 
2011-02-20, Капитан 
Nagios+Digitemp 
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
 
2011-02-17, Le1 
Zyxel Configuration 
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
 
2011-02-16, fox 
hast carp zfs ucarp cluster 
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
 
2011-02-04, BlackCat 
Восстановление ZFS 
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
 
2011-02-03, Капитан 
1-Wire 
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
 
			
			 
		 | 
	
	
		
		
	
		
			
			
				
					
						Статистика сайта
					 | 
				 
				
					
						Сейчас на сайте находится: 36 чел.
					 | 
				 
				
					
						За последние 30 мин было: 144 человек
					 | 
				 
				
					
						За сегодня было 7432 показов, 2938 уникальных IP
					 | 
				 
			 
		 | 
	 
 
	
		 | 
		 
		 | 
		
			   Этот информационный блок появился по той простой причине,
			что многие считают нормальным, брать чужую информацию не уведомляя автора
			(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
			Я не против распространения информации — только за. Только условие простое — извольте
			подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
			незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
			 
			  Если соизволите поставить автора в известность — то вообще почёт вам и уважение. 
			© lissyara 2006-10-24 08:47 MSK
			 
		 | 
		
			 
		 | 
		
		
		
		
		 | 
	
Комментарии пользователей [8 шт.]