How-to свой почтовый сервер без наворотов, postfix dovecot в 2015г. и переезд с gmail.com

Гугл переносит сервера в РФ. Да и квота его как-то исчерпалась. В общем, решено вновь, как сколько-то лет назад, почти уже 10, поднять свой почтовый сервер. Поскольку он будет обслуживать только закрытую группу пользователей, то всех пользователей будем прописывать ручками, базы данных для их учета нам не нужно. Это принципиальная позиция - обойтись минимумом. Вывод - вполне хватит связки Postfix + Dovecot.
Среди кучи, просто кучи руководств, бОльшая часть из которых создана в 2005-9гг, при попытке соединить в натуре все прочитанное, можно много слов высказать. Но виновато во всем время, изменившее и программы, и замусорившее поисковую выдачу.
Потому, подняв свой сервер, отпишу акутальную для 2015г. последовательность действий.
Какая ставилась задача -
1. поднять свой собственный почтовый сервер на простеньком железе и с минимумом софта. Сервер питается и-нетом через обычного провадера домашнего и-нета, сервер стоит "за" ротутером
2. замкнуть (перевести) все регистрационные записи домена на поднятый сервер
3. выкачать с gmail весь накопленный массив писем и залить его в пользовательский аккаунт своего сервера
4. обеспечить совместный доступ к почте нужных пользователей
5. веб-морду доступа к почте в конечном итоге было решено не подниамть. Типовое решение - роундкубе, он завязан на использование SQL, который на сервере хоть и поднят, но подключать не хотелось, поскольку этот роундкуб является слабым звеном - именно в нем находятся, редко, но бывают, уязвимости.

Все зедачи реализовать удалось. Гибкость и производительность на несколько голов выше Гугля. Например, каждый пользователь может дать доступ, РЕГУЛИРУЕМЫЙ (т.е. можно выставить раздельные разрешения на каждую папку в почте на каждое действие - читать, писать, удалять, создавать, менять влаги (прочтено\не) и т.п.) и это честный imap--доступ, понимаемый каждым почтовым клиентом. Это, кстати, и добило идею веб-морды, которая на джимыле использовалась преимущественно для "посмотреть расшаренную почту другого пользователя".
Компоненты решения - pigeonhole dovecot postfix spamassassin. Ставим их из репозиториев.

Postfix обеспечиват smtp - как принятие почты от наших клиентов, клиентов нашего домена с последующей передачей нашим же клиентам или во внешний мир, причем сразу на сервера получателей (минуя ретранслятор, smtp, нашего провайдера), а также обеспечивает принятие почты на наш домен от всех к нему обращающихся (на основании MX записи нашего домена).
Dovecot обеспечивает нам раздачу по нашим ящикам, сервис IMAP, POP3 и пр.
Потому их и используют в связке.
pigeonhole - это набор плагинов к dovecot
spamassassin - спам-фильтр

Существенно - для нормальной работы требуется нормальный провайдер. Нам потребуется выделенный ip и явно для него заданная обратная запись PTR. PTR может указывать только владелец ip адреса. Если у хорошего провайдера есть для этого явно созданный интерфейс, то в случае с домашними провайдерами это предмет переговоров. Важно - если мы делаем почту на домене domen.ru, то ptr надо настраивать не domen.ru, а mx.domen.ru. Эта PTR запись требуется при проверках, которые осуществляют получатели вашей почты при детекции валидности почты, спамоподавлении.

Spamassassin по результатам многлетнего использования буду менять на rspamd, поскольку не примере неприбития яндексписем наблюдаю неадекватную обучаемость ассассина.

Что общего отмечу - разбросанные по сети мануалы ощутимо путают, ибо написаны в разные годы. Особенно это касается Dovecot, у которого, например, теперь больше нет плагина autocreate, на который ссылается большинство мануалов. Что Postfix, что Dovecot теперь состоят каждый из одного пакета. Ставятся тривиально,


pacman -S postfix dovecot pigeonhole spamassassin

Наверняка интересанту будет нужно на одной машинке иметь почтовый сервер, обрабатывающий ящики нескольких доменнов и нескольких клиентов, причем на машинке-сервере этих клиентов (логинов) нет. Т.е., это важно понимать, речь идет и о виртуальных доменах, и о виртуальных пользователях. Кроме того важно понимать, что конфиг у обоих серверов содержит очень большое число настроечных параметров. Разнообразные мануалы создают иллюзию несложных, простых настроек - буквально в пару строчек. Фишка в том, что логика всех указанных программ работы следующая - созданный вручную файл конфига переписывает (переопределяет) лишь те параметры, которые в нем явно указаны. Т.е. если в мануале настройке Dovecot не указать явным образом допустимые в работе протоколы, то он будет предоставлять доступ сразу по всем. Если не определить т.н. "пространство имен" или определить его несколько раз, или без учета правил путей к файлам, то будет каша и аборт.

Лично я в итоге заблокировал pop3. Почему? - когда ноут постоянно подключен к сети, он скачивает по поп3 письма и сервер их автоматом считает "прочитаными", что отражается на уведомлениях в мобильной почте. Кромет того, если я скачанное по поп3 письмо перемещу в спам, то сервер об этом не узнает.

Поехали.

Нужен пользователь, от имени которого будет работать почта -


groupadd -g 5000 vmail \\
useradd -g vmail -u 5000 vmail -d /home/vmail -m
chmod 700 -R /home/vmail/ #без этого хода вы столкнетесь с тем, что создать\переименовать папку в Имап почте вы сможете, а удалить - нет.

groupadd -g 5001 spamd
useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin -m spamd
chown -R spamd:spamd /var/lib/spamassassin /etc/mail/spamassassin /home/vmail/bayes
Существенно - директорий, где будет храниться почта. Имеет смысл указывать директорий на шифрованном разделе, а данном случае /home/vmail. Настройки Postfix вместо обычно используемых файлов конфига буду вставлять командой модификации конфига (все эти команды меняют /etc/postfix/main.conf). Собственно после чистой установки в /etc/postfix есть шаблон main.conf, его можно прибить, приводимые команды создадут новый и в прямо не указанной части будут действовать т.н. "параметры по умолчанию". Я лично почему-то пошел иным путем, то-ли шаблон переименовал в main.conf, то ли там уже был свой. В нем туева туча строчек, все строки упорядочены по алфавиту (это знание полезно при попытке отыскать нужный параметр в редакторе). Правим -

 postconf -e 'myhostname = мой.главный_домен_с_МХ_записью_у_провайдера.ru'
 postconf -e 'mydestination =  мой.главный_домен_с_МХ_записью_у_провайдера.ru, localhost, localhost.localdomain'
 postconf -e 'virtual_alias_domains = все_другие_домены_через_запятую.ru'
 postconf -e 'virtual_alias_maps = hash:/etc/postfix/virtual'
 postconf -e 'alias_maps = hash:/etc/postfix/aliases'
 postconf -e 'virtual_mailbox_domains = мой.главный_домен_с_МХ_записью_у_провайдера.ru, все_другие_домены_через_запятую.ru'
 postconf -e 'virtual_uid_maps = static:5000'
 postconf -e 'virtual_gid_maps = static:5000'
 postconf -e 'smtpd_sasl_auth_enable = yes'
 postconf -e 'broken_sasl_auth_clients = yes'
 postconf -e 'smtpd_sasl_authenticated_header = yes'
 postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'
 postconf -e 'smtpd_use_tls = yes'
 postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/mail.crt'
 postconf -e 'smtpd_tls_key_file = /etc/ssl/private/mail.key'
 postconf -e 'smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache'
 postconf -e 'smtpd_tls_security_level = may'
 postconf -e 'smtp_tls_security_level = may'
 postconf -e 'virtual_transport = lmtp:unix:private/dovecot-lmtp'
 postconf -e 'smtpd_sasl_type = dovecot'
 postconf -e 'smtpd_sasl_path = private/auth'
 postconf -e 'local_recipient_maps = unix:passwd.byname $alias_maps $virtual_mailbox_maps'
 postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks'
 postconf -e 'smtpd_banner = $myhostname ESMTP'
 postconf -e 'biff = no'
 postconf -e 'strict_rfc821_envelopes = yes'
 postconf -e 'disable_vrfy_command = yes'
 postconf -e 'smtpd_helo_required = '
 postconf -e '  smtpd_recipient_restrictions =  permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination,  reject_unauth_pipelining,  reject_invalid_hostname'
 postconf -e 'invalid_hostname_reject_code = 550'
 postconf -e 'non_fqdn_reject_code = 550'
 postconf -e 'unknown_address_reject_code = 550'
 postconf -e 'unknown_client_reject_code = 550'
 postconf -e 'unknown_hostname_reject_code = 550'
 postconf -e 'unverified_recipient_reject_code = 550'
 postconf -e 'unverified_sender_reject_code = 550'
 postconf -e 'local_destination_recipient_limit = 10'
 postconf -e 'local_destination_concurrency_limit = 10'
всем этим мы сказали, где брать наши ключи\сертификаты, логины\пароли, наши домены, дали инструкции хоть как-то отбрыкиваться от спамеров (т.е. не отправлять\не принимать через сервер почту от имени и для несуществующих пользователей), указали на связку с Dovecot.

Ключи, цифровые сертификаты сервера, выше мы указали место их хранения (можете прописать любое свое, главно их создать). Желательно, конечно, иметь "взрослые" сертификаты, подписанные хоть каким-нибудь сертификационным центром. В простейшем случае можно использовать свои, самосозданные (не помню я как их сделал, но вариаций и инструкций много) -


/etc/ssl/certs/mail.crt
/etc/ssl/private/mail.key
Теперь можно разобраться с именами, пользователями. Все реальные пользователи (самого сервера, не путать с пользователями почтового сервера) есть в Системе (кто может залогиниться на сервере как пользователь). Файл /etc/aliases содержит псевдонимы локальных пользователей. Т.е. в системе есть root и куча других, в этом файле их сопоставляют с теми, кто может залогиниться. Входящий в комплект Postfix аналогичный файл /etc/postfix/aliases лишь дополняет /etc/aliases, т.е. при запуске сервера инклудит (вроде) в себя /etc/aliases. Вцелом кроме как указать кому пересылать почту за рута, постмастера и т.п. эти файлы не нужны. Но после любого их изменения надо выполнить команды, изменения в этих файлах требуют индексации и (возможно) перезапуска postfix -


newaliases #(индексирует /etc/aliases)
postalias /etc/postfix/aliases
Наиболее активно используемый файл, это файл виртуальных имен,

/etc/postfix/virtual

Именно в нем мы можем делать чудеса маршрутизации, указывая сперва имя, хоть просто имя, могущее существовать в любом из обслуживаемых доменов (или не существовать, но почту принимать), хоть конкретный мейл (включая мейл, не обслуживаемый вашим сервером, но отправку на который вы хотите поймать в ящик на вашем сервере), затем после пробела набор мейлов (включая любые внешние) или имен, на которые нужно перекидывать почту -

user имя1, [email protected], ewvrevr

добавлять можно так -


echo 's us1, us2' >> /etc/postfix/virtual
echo 'пример@gmail.com us1' >> /etc/postfix/virtual

повторюсь, после редактирования обязательно выполнить команду -


postmap /etc/postfix/virtual

Далее уже надо ручками поправить /etc/postfix/master.cf, указав в нем на обслуживающего агента (dovecot) и спамодав. Во избежание ошибок рекомендую сперва -


rm /etc/postfix/master.cf

теперь

 nano (или gedit, или medit, редактор) /etc/postfix/master.cf

вставив туда (будье внимательны при копи-пасте - длинные строки могут терять кончики с трагическими последствиями!)-

 submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
 -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

dovecot   unix  -       n       n       -       -       pipe
       flags=DRhu user=vmail:vmail argv=/usr/bin/vendor_perl/spamc -F -u spamd -e /usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}
smtp      inet  n       -       -       -       -       smtpd -o content_filter=spamfilter

spamfilter unix -       n       n       -       -       pipe flags=Rq user=spamd argv=/etc/dovecot/spamfilter.sh -oi -f ${sender} ${recipient}

pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
#qmgr     unix  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

намаявшись с разбросанными в разных местах конфигами я пришел к тому, что зачистил директорий давкота и все сложил туда.


rm -R /etc/dovecot/*

теперь сам скрипт спамодава. В Вики спамодава указаны разные способы увязки всех демонов, я пробовал разные, завелся именно этот, хоть я его и пробовал последним (в нем задействован sendmail, имеющийся в любой системе) -


редактор /etc/dovecot/spamfilter.sh


#!/bin/bash

SENDMAIL=/usr/bin/sendmail
SPAMASSASSIN=/usr/bin/vendor_perl/spamc
logger <<<"Spam filter piping to SpamAssassin, then to: $SENDMAIL [email protected]"
${SPAMASSASSIN} | ${SENDMAIL} "[email protected]"

exit $?

даем права на запуск -

chmod -R 777 /etc/dovecot/spamfilter.sh

рисуем скрипт, которым будет создана связка Логин-пароль пользователя почтового сервера. Логин и пароль (хэш пароля) будут записаны в файл /etc/dovecot/users. Логины предпочтительно создавать как [email protected] Это имеет значени, поскольку именно с учетом схемы принятых имен будут создаваться директории (папки), на которые завязаны разные настроечные параметры, в т.ч. "пространство имен". Пойдя по пути пользователь = 'user' вы столкнетесь с конфликтом имен. Создаем -


редактор /etc/dovecot/sozdanie_user

скрипт -

#!/bin/sh
echo $1:$(doveadm pw -s ssha512 -p $2):::::: >> /etc/dovecot/users

права на запуск -

chmod -R 777 /etc/dovecot/sozdanie_user

Пример запуска (создания) -

./etc/dovecot/sozdanie_user '[email protected]' 'пароль-сложный-пресложный'

Скрипт обучения антиспама, я его затачивал на обучение по спам-папкам лишь продвинутых пользоваталей, которые следят за вопросом.


редактор /etc/dovecot/spam

скрипт -

#!/bin/bash
 # обучение на основе спама конкретных пользователей
sa-learn --spam /home/vmail/домен/user1/Maildir/Junk/
sa-learn --spam /home/vmail/домен/user2/Maildir/Junk/
sa-learn --spam /home/vmail/домен/user3/Maildir/Junk/

#обчение на письмах - НЕ спам
sa-learn --ham  /home/vmail/домен/user1/Maildir/
sa-learn --ham  /home/vmail/домен/user3/Maildir/

права на запуск -

chmod -R 777 /etc/dovecot/spam

затем скормим команду крону, чтобы с какой-то периодичностью спам-фильтр самообучался -


crontab -e

там нарисуйте строчку -

30 5 */1 * * /etc/dovecot/spam

Еще один срипт, последний, который будет делать простую вещь - все письма, помеченные Спамфильтром как спам НЕ убивать, а просто перекладывать в папку спам клиента. Почему так? - если спам прибивать, то потеряются письма, ошибочно принятые за спам. Если не прибивать и не перекладывать, то во Входящих на 1 полезное будет 50-100 спамовых писем и телефоны с их мобильными клиентами почты замучают нотификациями. В этом же файле можно настроить и другие сортировки, выполняемые в рамках стандартного для вашего сервера "пространства имен". Кроме того, для обучения спам-фильтра ему нужно иметь место, куда сложен отобранный спам.


редактор spam.sieve

скрипт -

require "fileinto";
if header :comparator "i;ascii-casemap" :contains "subject" "*****SPAM*(" {
  fileinto "Junk";
  stop;
} else {
  keep;
}

Права на исполнение давать не надо, надо скомпилировать -


sievec /etc/dovecot/spam.sieve

Как видите, сортировщик ищет в теме письма нужные ему буквы, символы. Их рождает антиспам-фильтр, который тоже надо подстроить. Прибьем лишний конфиг (чтобы глаза не разбегались) и сделаем свой. Если есть желание менять заголовок, то это надо делать здесь и в скрипте сортировщика, синхронно (не забыв про компиляцию сортировщика) -


rm /etc/mail/spamassassin/local.cf
rm /var/lib/spamassassin/3.004001/updates_spamassassin_org/local.cf
редактор /var/lib/spamassassin/3.004001/updates_spamassassin_org/local.cf

ВНИМАНИЕ - при последующих, с годами, обновлениях будет меняться версия ассассина и вместо 3.004001 будут другие цифры, а конфиги рабочие будут таки по пути /etc/mail/spamassassin/local.cf

в редакторе -


rewrite_header Subject *****SPAM*(_SCORE_)*
report_safe 0
required_score 6.0
use_bayes 1
bayes_auto_learn 1
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status
bayes_min_ham_num 1
bayes_min_spam_num 1
ok_locales ru en uk
#важно - указывать путь к реально существующему директорию, иначе обучение не будет работать!
bayes_path /etc/mail/spamassassin/bayes
bayes_file_mode 0666
score SUBJ_FULL_OF_8BITS 0
score FROM_ILLEGAL_CHARS 0
score SUBJ_ILLEGAL_CHARS 0
score HEAD_ILLEGAL_CHARS 0
score HABEAS_SWE 0
score FORGED_IMS_TAGS 1
score BAYES_00 0.0001 0.0001 -2.312 -2.599
score BAYES_05 0.0001 0.0001 -1.110 -1.110
score BAYES_20 0.0001 0.0001 -0.740 -0.740
score BAYES_40 0.0001 0.0001 -0.185 -0.185
score BAYES_50 0.0001 0.0001 0.001 0.001
score BAYES_60 0.0001 0.0001 2.0 2.0
score BAYES_80 0.0001 0.0001 3.0 3.0
score BAYES_95 0.0001 0.0001 3.5 3.5
score BAYES_99 0.0001 0.0001 5.0 5.0
score ALL_TRUSTED -3.360 -3.440 -3.665 -3.800
Теперь конфигурируем сам давкот -

редактор /etc/dovecot/dovecot.conf

в редакторе -

# 2.0.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-504.16.2.el6.x86_64 x86_64 CentOS release 6.6 (Final)

protocols = imap lmtp pop3
auth_mechanisms = plain login
mail_gid = vmail
#схема директориев в почтовом каталоге
mail_home = /home/vmail/%d/%n
mail_location = maildir:~/Maildir:LAYOUT=fs

#без фишки :LAYOUT=fs ох нахлебались бы, как я

mail_uid = vmail
mbox_write_locks = fcntl
mail_privileged_group = virtual

passdb {
  args = scheme=ssha512 username_format=%u /etc/dovecot/users
  driver = passwd-file
}

service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }
}

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
  user = vmail

}

ssl_cert = </etc/ssl/certs/mail.crt
ssl_key = </etc/ssl/private/mail.key

userdb {
  args = username_format=%u /etc/dovecot/users
  driver = passwd-file
}

mail_plugins = acl

#схема для отображения расшаренных папок почты пользователей
namespace  {
  type = shared
  separator = /
  prefix = shared/%%u/
  location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u
  subscriptions = no
  list = yes
}

#стандартные папки почты для каждого пользователя
namespace inbox {
#  prefix = INBOX. # the namespace prefix isn't added again to the mailbox names.
  inbox = yes
  type = private
  list = yes
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }

  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }

  mailbox Sent {
    auto = subscribe # autocreate and autosubscribe the Sent mailbox
    special_use = \Sent
  }

  mailbox Junk {
    auto = subscribe # autocreate Spam, but don't autosubscribe
    special_use = \Junk
  }
}
Избегайте отсебятины в именах и схемах директориев, на них завязан и совместный доступ, и срипт сортировки, и скрипт обучения антиспама.
В части создания и настройки сервера это все. Пора запускать.

systemctl enable postfix  dovecot spamassassin.service
systemctl start postfix  dovecot spamassassin.service
смотреть логи так -

journalctl -xef

При первом же логине клиента будут созданы каталоги (директории), все необходимые файлы. Рекомендую дальнейшие операции выполнять почтовым клиентом Thunderbird, он вполне адекватен. Но заводить "учетную запись" ЕЩЕ РАНО. Поскольку потребуется масса перезагрузок клиента, отключите плагин календаря (сильно задерживает запуск), найдите и подключите плагин imap-acl-ext... - сам расшаренный доступ к папкам пользователей дает плагин давкота acl, а плагин давктоа imap-acl позволяет пользователям через их почтовую программу с плагином почтового клиента imap-acl-ext.. рулить правами доступа к своей почте другим пользователям. Собственно рулежка эта обеспечивается имеющимся в каждом каталоге почты файлике -


редактор  /home/vmail/домен.у/юзер/Maildir/dovecot-acl

в нем -


owner lrwstipekxa
user=юзер@домен.у lr

владельцу полные права, а юзеру - иные (чтение, просмотр папок)

Через почтовую программу в списке папок учетной записи -
Свойства - вкладка Совместное использование - Сет пермишн - упражняйтесь вволю
Подписаться - внизу (согласно Пространству имен) будет shared и список доступных почт других пользователей.
Поскольку мы планово собирались выкачать с джимыла всю накопленную почту, то встанет вопрос ограничений Thund... на размер папки почты (4.х гб). Тырнет изобилует ссылками на нерешаемость проблемы. Это не так. Thund - настройки - Дополнительные -внизу вкладки "тип харнилища сообщений..." следует выбрать "по файлу на сообщение". Перезагрузка программы.

Идем в веб-версию джимыла (мэйл-ру, яндекс и т.п.), в настройках ищем про pop3 или imap. Включаем доступ по поп3 КО ВСЕМ письмам. Здесь же, зависит от вашей решительности, ставим галки - удалять ли скачанные письма. пугаться не надо - удаляются они в Корзину и если что не так, легко оттуда достаются. Далее глубоко заполночь, чтобы не мешать домашним, в Thund заводите почтовый ящик джимыла. Да, он был и ранее (наверняка). Но ведь в нем же проводились чистки? А стоит задача выкачать все? так что новый ящик. Если Thund будет ругаться на дублирование (ранее был поп3 ящик), заведите imap и наоборот. Теперь медленно и печально Thund выкачает все гигабайты вашей почты. Не мешайте ему. Проверьте итоговый размер ящика в Thund и число писем, сопоставьте с данными вебверсии джимыла. Если что не так - все прибить и повторить.

Пока он качает, идем в паннель управления Роутера и прописываем в нем проброс портов (25, 110, 587, 143, 465) из и-нета на сервер (машину) с почтой. Также идем в паннель управления хостинг-провайдера и там для нашего домена указываем адрес нашего сервера (роутера, его внешний ip).
В моем случае, поскольку настройки не позволяли указать сразу ip адрес, хостинг-провайдер пририсовал свой адрес-псевдоним, который в свою очередь ссылался на мой ip. Техподдержка поможет.

Когда выкачалась почта в Thund заводим учетную запись со своего сервера, сразу указывая ВНЕШНИЙ ip (роутер это должен позволять). Ну соотв. выбрать imap, указать имя пользователя и пр. Хорошо бы перезапустить Thund.

Место для принципиального решения - куда конкретно класть выкачанную из джимыла почту? - я в "удаленные" (которые Thund было запрещено чистить). У Вас иное мнение? - создайте папку и вперед. Тыкаем мышью в список писем джимыла и пробуем Ctrl+A (выделить все). Добиваемся выделения всего (сколько-то десятков тысяч?). Правой кнопкой - переместить (или скопировать - на Ваш вкус) в папку - и указываем куда именно какой именно учетной записи. Могу уверенно утверждать, что если при этом ничего с Thund не вытворять, то тысяч 20 писем он так перенесет. Но если попытаться еще что-то делать, то он может раздуться в ОЗУ заняв его целиком (мои 4гб) и ..... что-то может пойти не так. Терпение. Сперва он тащит маленькие письма, самые большие - в самом конце. Сколько-то часов. Комп при этом нормально работает.

После переноса учетную запись джимыла можно прибить, в его вебморде настроить автоответчик и пересылку почты. И забыть о нем. Получив взамен очень хорошую скорость, патриотичность (никаких проблем и в Крыму), возможность кидать любого размера почту с любыми вложениями и без "большого брата" в мыльнице, возможность гибко настраивать совместный доступ и пользовать его в мобильных и настольных клиентах.
спасибо
Ошибки в тексте-неповторимый стиль автора©
статья что надо
Думаю статье место в блогах. )
Хорошая статья, только у меня возник вопрос зачем в virtual_mailbox_domains прописывать мой.главный_домен_с_МХ_записью_у_провайдера.ru если он уже прописан в mydestination и как следствие является локальным доменом с локальными пользователями? или я чего то недопонимаю?
не возьмусь убедительно ответить.
Но исходил из следующего, и, казалось, это вроде отразил - машина, на которой поднят сервер, имеет локальных пользователей, но ни их число, ни их имена не совпадают (могут не совпадать) с именами пользователей почты. И само имя машины, на которой развернут сервер, может быть любым (иным), не совпадающим с доменом поддерживаемой почты. Исторически сложилось так, что сперва родилась машина-сервер, по-сути с одним пользователем-админом, потом к ней постепенно прикручиваются различные сервисы и, думаю, это весьма распространенная ситуация.
Соответственно следствием является частичное дублирование - это как указание даже в разных местах aliases, когда постфиксовый сам по себе считывает (инклудит, включает в себя) системный, ведь обычно как о само собой разумееющихся вещах не говорят (не пишут), а новички о них и не узнают.
В принципе понял, просто всегда считал что один и тот же домен нельзя прописывать и как локальный и как виртуальный

UPS: И как оказалось был прав, если домен - мой.главный_домен_с_МХ_записью_у_провайдера.ru указать в $mydestination, а также его указать в $virtual_mailbox_domains. То мы получаем в логах предупреждение:
warning: do not list domain мой.главный_домен_с_МХ_записью_у_провайдера.ru in BOTH mydestination and virtual_mailbox_domains

Т.е. мы указали один и тот же домен сразу в двух классах адресов - локальных и виртуальных. Чего не стоит никогда делать.
Эм заметил что в статье для postfix не используется virtual_mailbox_domains, откуда postfix знает какие у него есть ящики?
Сам в свое время удивлялся, когда читал множественные хаутушки. Во всех случаях постфикс обязательно работал в связке с чем-нибудь типа давкота. Собственно реальных пользователей почты я создавал в давкоте (описано). Виртуальных, включая всевозможные переадресации, указывал в /etc/postfix/virtual и ссылки на вирутальных по мере надобности в /etc/postfix/aliases.
Вики по давкоту глаголят примерно так - "при первом входе пользователя будут созданы ящики\директории". Связка между постфиксом (транспорт) и агентом, выразимся в контексте вопроса так - "раскладки по ящикам" (это я умничаю, возможно и напрасно, без глубокого знания предмета), непосредственно в конфиге постфикса указан давкот. Т.е. указание постфиксу использовать давкот содержится в конфиге (описано), и отдельно повторю -
postconf -e 'mailbox_command = /usr/lib/dovecot/deliver'
postconf -e 'virtual_transport = lmtp:unix:private/dovecot-lmtp'
postconf -e 'smtpd_sasl_type = dovecot'
Хорошо, может я что то просто не допонимаю, в силу того что я тоже не шибко соображаю в данном вопросе, ваше пояснение я принял к сведению постараюсь разложить его у себя в голове по полочкам.
В предыдушем посте я допустил ошибку я имел виду не virtual_mailbox_domains а virtual_mailbox_maps, и его упоминание я всетки нашол у вас, оно у помянуто в local_recipient_maps, тем самым вы виртуальных пользователей относите к локальным, если я правильно помню назначение данного параметра.
 
Зарегистрироваться или войдите чтобы оставить сообщение.