![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Вставить ник | Быстрая цитата | Сообщение
#1
|
|
![]() Постоялец форума ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 967 Регистрация: 17.08.2004 Пользователь №: 4400 ![]() |
Добрый день, друзья.
Озадачился я тут созданием почтового архива фирмы на всякий пожарный случай, так как почта лежит в IMAP и к ней имеет доступ несколько человек, да и провайдер пару раз. Навеяло потупчикгейтом и просто разросшимся IMAP на сервере у провайдера, а тут еще и у начальника оутглюк сбойнул и показал, только показал, что в общем ящике пустота! В принципе была необходимость сделать архив только общего почтового ящика типа коллективной помойки, но можно распространить и на все ящики POP/IMAP. Приступаем к формированию задачи: 1) ежедневный (ежечасный/ежеминутный/и т.д.) архив почтовых ящиков с удаленного IMAP/POP 2) удаление сообщений старше 1 месяца на удаленном сервере 3) раздача архива с внутреннего IMAP-сервера заинтересованным пользователям 4) раздача общего архива через публичную IMAP-папку, чтобы не плодить лишних аккаунтов Приступаем к решению задачи: 1) почту будем забирать ]]>getmail]]>, сначала посмотрел на старый и добрый fechmail, но неасилил ![]() 2) почту будем хранить в формате Maildir - он быстрый, индексированный, все в отдельных файлах - просто прелесть! 3) почту будем отдавать по IMAP - ну люблю я его и для коллективной работы то что надо, да и public folders в наличии в протоколе - просто прелесть! 4) отдавать будем через IMAP-сервер ]]>Dovecot]]>, сначала хотел через старый и добрый courier imap все сделать, но неасилил второй раз ![]() Поехали - Getmail! Для установки достаточно скопировать архив ]]>http://pyropus.ca/software/getmail/old-ver...l-4.25.0.tar.gz]]> Разархивировать и установить командой python setup.py install в разархивированном архиве. Getmail умеет работать от любого пользователя в системе, так как в нашем случае все пользователи будут виртуальные, но создаем системного пользователя vmail adduser --system vmail addgroup --system vmail adduser vmail vmail Создаем каталог для почты (в моем случае /mnt/archive/vmail), этот каталог будет содержать почту для пользователей, архив ящиков и прочее разное. Создаем почтовый ящик для архива по лользователей, mkdir -p /mnt/archive/vmail/public-info/Mailbox mkdir -p /mnt/archive/vmail/leah/Mailbox Не забываем сделать на созданные каталоги права для vmail chown vmail.vmail /mnt/archive/vmail -R Теперь создаем в системе каталог для самого getmail, обычно он находится в каталоге пользователя и называется ~.getmailrc, но в нашем случае пользователи виртуальные, поэтому создадим его например в /root и назовем /root/getmailrc - тут будут лежать конфиги и логи работы!!! В каталоге создаем файлы конфигурации для нашего пользователя и архива почты: /root/getmailrc/info.conf - забираем почту для общего IMAP аккаунта CODE [options] verbose = 1 read_all = false delete_after = 0 delete = false message_log = /root/getmail/log [retriever] type = SimpleIMAPRetriever server = mail.xxx.ru username = info@xxx.ru password = yyyyy [destination] type = Maildir user=vmail path = /mnt/archive/vmail/public-info/Maildir/ /root/getmailrc/leah.conf - забираем почту для своего аккаунта CODE [options] verbose = 1 read_all = false delete_after = 0 delete = false message_log = /root/getmail/log [retriever] type = SimpleIMAPRetriever server = mail.xxx.ru username = leah@xxx.ru password = yyyyy [destination] type = Maildir user=vmail path = /mnt/archive/vmail/leah/Maildir/ Проверяем общий getmail -v --getmaildir /root/getmail --rcfile info.conf Проверяем пользовательский getmail -v --getmaildir /root/getmail --rcfile leah.conf Если все прошло успешно, то в наших каталогах Mailbox будет архив почт, а на экране будут строки типа... getmail version 4.25.0 CODE Copyright © 1998-2009 Charles Cazabon. Licensed under the GNU GPL version 2. SimpleIMAPRetriever:info@xxx.ru@mail.xxx.ru:143: msg 1429/1433 (5132 bytes) delivered msg 1430/1433 (66312 bytes) delivered msg 1431/1433 (1738 bytes) delivered msg 1432/1433 (59329 bytes) delivered msg 1433/1433 (95302 bytes) delivered 5 messages (227813 bytes) retrieved, 1428 skipped Все получилось? Если нужно удалять сообщения с сервера после архивирования - ставим delete=true в конфиге, если нужно удалять сообщения с сервера старше 30 дней - ставим delete_after=30. Только ставьте что нибудь одно, delete=true имеет наивысший приоритет! Сообщения с сервера удаляются, архив пополняется. Не забываем вставить наши строчки в crontab (getmail умеет и демоном рабоатть, но мы старой закалки!), -v опция при этом не нужна, у нас логи ведутся! 10 6 * * * root /usr/local/bin/getmail -v --getmaildir /root/getmail --rcfile info.conf 15 6 * * * root /usr/local/bin/getmail -v --getmaildir /root/getmail --rcfile leah.conf Так... теперь нужно организовать доступ к архиву через стандартный мыло-клиент, у меня Mail в MacOSX, а у вас? Летим - Dovecot! Не будем снобами и поставим его из системы apt-get install dovecot Конфигурация находится обычно в /etc/dovecot/dovecot.conf Отредактируем его (создадим новый!!!), добавив нашу публичную папку public-info (будет доступна всем пользователям нашего внутреннего IMAP), добавим виртуальных пользователей (пока только один). CODE # Remove pop3 things if you don't want them protocols = imap imaps # It's nice to have separate log files for Dovecot. You could do this # by changing syslog configuration also, but this is easier. log_path = /var/log/dovecot.log info_log_path = /var/log/dovecot-info.log # Disable SSL for now. ssl = no # v1.2+, for older versions use: ssl_disable = yes disable_plaintext_auth = no # We're using Maildir format mail_location = maildir:~/Maildir # When creating any namespaces, you must also have a private namespace: namespace private { # type = private separator = / prefix = #location defaults to mail_location. inbox = yes } namespace public { #type = public separator = / prefix = Public/ location = maildir:/mnt/archive/vmail/public-info/Maildir subscriptions = no } # If you're using POP3, you'll need this: pop3_uidl_format = %08Xu%08Xv # Authentication configuration: auth_verbose = yes first_valid_uid = 100 auth default { mechanisms = plain passdb passwd-file { args = /etc/dovecot/passwd } userdb static { args = uid=vmail gid=vmail home=/mnt/archive/vmail/%u } } Особое внимание обращаем на секции namespace public и userdb static, сюда пишем пути до нашего общего маилбокса и до пользовательских маилбоксов. Логины/пароли пользователей храним в открытом виде (для простоты) в файле /etc/dovecot/passwd в виде строк, где leah пользователь, 123456 - пароль, {PLAIN} - тип кодировки пароля. leah:{PLAIN}123456 Перпезапускаем restart dovecot, смотрим ошибки... (быть такого не должно..) Приехали! Берем свой любимый мылер (у меня Mail в MacOSX, если кто не знает...), заводим дополнительный аккаунт на вновь созданный сервер IMAP и смотрим - у каждого пользователя помимо приватной папочки еще будет и общая папочка Public. Вы не устали читать? А я закончил ![]() Сообщение отредактировано leah - 6.04.2012 - 13:21 |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 26.04.2025 - 19:35 |