Отвлекусь от кино обзоров и сохраню крайне интересную мысль на будущее. Прочитав статью «Хроники домашнего импортозамещения: замещаем e-mail (и узнаём, кто сливает почту на сторону)» я задумалась об одном нюансе о котором автор то ли умолчал, то ли не подумал.

Суть заключается в том, что если по каким-либо причинам уникальный ящик попадает к спамеру или просто достаточно любопытному человеку, то первое что последует после обнаружения github@mydomain.lol это перебор других не менее говорящих адресов. В результате данный подход может быть более чем полностью скомпрометирован, но самое худшее что это выдаст потенциальному злоумышленнику список сервисов и сайтов (как минимум популярных) которыми юзер пользуется. Согласись, гугл, это звучит отстойно.

Как можно исправить данную ситуацию? Довольно просто. Каждому сайту нужно заводить не просто уникальный email, но и название email’а должно быть уникальным. Для этого подойдёт любой (на вкус и цвет) алгоритм обратимого шифрования.

Например: вместо говорящего ящика github@mydomain.lol применяем простейший ROT13 к имени и получаем tvguho@mydomain.lol, который «понять» уже гораздо сложнее. Но всё же можно. Поэтому серебряная пуля это использование любого общедоступного хэширующего алгоритма на 8-12 символов с солью, которую знаешь только ты.

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

Изначально планировалась заметка о том, как поставить и настроить «лёгкий» и удобный почтовый сервер, но увы, задача оказалась сильнее меня. Поэтому публикую некоторые грабли с которыми успела познакомиться в процессе и решить.

Траблшутинг

Если в логах появляется следующая XYетень, то 90% что виноват в этом SELinux.

Mar  2 02:08:14 nyaa dovecot: POP3(xxx@yyy.zz): mkdir(/var/vmail/yyy.zz/xxx/cur) failed: Permission denied
Mar  2 02:08:14 nyaa dovecot: POP3(xxx@yyy.zz): Couldn’t open INBOX: Internal error occurred. Refer to server log for more information.

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

ВАРН! — Это решение работает частично, так как далее возникает затык с пермишенами при создании файлов писем и там полная жопа. Лечится по слухам добавлением специального типа пермишенов для довкота либо отключением SELinux’а, но на практике не проверяла.

# semanage fcontext -a -t dovecot_spool_t ‘/var/vmail(/.*)?’

# restorecon -Rv /var/vmail

Если у вас появляется ошибка:

postfix/cleanup[4486]: warning: connect to mysql server localhost: Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’

Можете смело пиздить тех умников, которые пишут localhost в манах. Разницу постфикс имеет, мой юный падаван!

Правим все hosts=localhost на hosts=127.0.0.1 опля!

Столкнулась с проблемой отказа некоторых серверов принимать мыло с серевера. Как вариант решила попробовать добавить SPF.

Итак, основная идея в том, что для всех доменов находящихся на сервере (и не только) указывается один MX сервер, который и занимается обработкой сообщений. Указывать надо именно тот домен, который прописан в PTR записи.

Если допустим в PTR записи указан домен main.com, то для обслуживаемых доменов днс записи будут следующие:

domain.ru. MX 10 mail.main.com
domain.ru. TXT «v=spf1 a:mail.main.com mx ptr -all»

Полезные ссылочки:
http://old.openspf.org/dns.html (примеры SPF записей)