ServerAdmin.ru
28.8K subscribers
293 photos
34 videos
13 files
2.62K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Существует простой и эффективный метод борьбы со спамом — Greylisting. Его переводят на русский как серый список. Расскажу вам простыми словами, как он работает, а также поделюсь своим опытом его использования.

Принцип работы Greylisting очень прост. Когда на сервер поступает письмо от нового адресата, с которым он ещё не взаимодействовал, письмо отклоняется с временным кодом ошибки 4ХХ, обычно 450. Согласно rfc5321, отправитель, получив такую ошибку, должен выполнить повторную отправку через некоторое время. В rfc оно указано как не менее 30 минут, если я правильно понял (the retry interval SHOULD be at  least 30 minutes). На практике обычно это время меньше. В postfix по умолчанию оно равно 3 минутам.

Вот тут и кроется главная проблема. Не все серверы делают повторную отправку через 3 минуты. Это всё может настраиваться индивидуально, а rfc не указывает конкретные значения. В итоге может так получиться, что пользователь в течении 10-20 минут не сможет получить письмо от нового контрагента, что очень раздражает. Случается такое не часто, но бывает.

Способ реально простой и рабочий. Отсекает спам эффективно, так как спамеры обычно не обрабатывают коды ошибок и не держат у себя очередь, так как это накладно. Рассылка идёт по сотням тысяч адресов с каких-то взломанных машин или временных почтовых серверов. Надо за короткий промежуток времени разослать как можно больше почты, пока тебя не забанили. Поэтому обработкой ошибок обычно не занимаются.

Так что Greylisting очень дешёвый и эффективный способ борьбы со спамом, который не требует особых настроек. Достаточно где-то хранить список всех серверов, с которых вы уже получали почту и принимать от них её сразу. А всем остальным на первый раз выдавать 450 ошибку. Если они повторно делают отправку к вам, то принимается письмо, а сервер добавляется в этот список.

Во многих готовых почтовый сборках этот механизм включён по умолчанию. Например в Iredmail или Mail-in-a-Box. Я лично всегда его отключают, потому что даже задержка письма на 5-10 минут хотя бы раз в месяц вынудит пользователя сообщить поддержке, что с доставкой какие-то проблемы. И надо будет разбираться, объяснять в чём тут дело. Популярна ситуация, когда пользователь разговаривает с кем-то по телефону и тут же обменивается почтой. И письмо не приходит сразу. Для разговора в режиме реального времени задержка в 3 минуты значительна и раздражает. Приходится ждать, обновлять ящик, отправлять ещё раз и т.д.

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

#mailserver
​​Вчера изучал тему веб панелей для почтовых серверов. Сам постоянно использую Roundсube, но хотелось поискать что-то более функциональное. Про SOGo знаю, мне она не нравится. С удивление обнаружил, что проект SquirrelMail всё ещё жив. Не так давно было обновление для поддержки php 8. Этот веб интерфейс я настраивал на первых своих почтовых серверах ещё под Freebsd 6.2, как сейчас помню эту версию.

На глаза попался проект Cypht, который сразу заинтересовал. Это web клиент для imap и rss. Отличительная особенность его в том, что в нём можно подключать много ящиков одновременно, и он умеет выводить письма из них в едином списке. Причём в этом списке можно сразу же отвечать от имени той учётной записи, на которую пришло письмо.

У меня самого очень много почтовых ящиков. Вопрос с чтением почты я решаю пересылкой из этих ящиков на один. В целом, нормально всё работает, но если вдруг какая-то пересылка отвалится, я об этом не узнаю. Так что функционал объединения кучи ящиков в единый веб интерфейс меня заинтересовал.

Я установил и попробовал эту веб панель. Сразу скажу, что интерфейс так себе. Не особо понравился. Но заявленный функционал реализован. Подключил три ящика и 2 rss ленты. Как я и сказал в начале, Cypht поддерживает rss, так что является по сути ещё и читалкой этих лент. При этом он умеет в единый список объединять события как из почты, так и из rss лент.

Проект не сказать, что сильно активный, но тем не менее, обновления выходят уже много лет. В github много issues. То есть люди пользуются и считают его полезным. Я провозился с ним пол дня. Вряд ли сам буду использовать. Помимо почты и rss там ещё можно вести календари, подключать контакты из того же gmail.

Интерфейс мобилен (написан на php, для работы нужна mysql база), так что можно со смартфона смотреть. Эта веб панель наверно будет более актуальна для тех, кто не только читает из кучи ящиков, но ещё и отвечает от них же. Там этот функционал реализован удобно. Либо сразу отвечаешь из общей ленты под конкретным аккаунтом, либо создаёшь новое письмо и выбираешь учётку, от которой оно будет отправлено, как в microsoft outlook.

Хотел поинтересоваться, какая веб панель для работы с почтой вам нравится больше всего?

Сайт / Исходники / Docker (неофициальный)

#mailserver
​​Я неоднократно получал как вопросы, так и запросы на настройку аватарок в почтовых клиентах. Подобные вещи реализованы в популярных почтовых сервисах, типа yandex или gmail. К сожалению, сделать так же у себя не получится.

В почтовых протоколах smtp и imap нет понятия аватар. Соответственно почтовые системы по умолчанию никакие аватары принимать и понимать не могут. Изображения к контактам интерпретируют почтовые клиенты на основе своей базы контактов. Каждый сервис ведёт свою базу контактов и аватарок к ним. Реализация закрыта, так что мы наверняка не может судить откуда они берут картинки. Также нет и доступа к общей базе данных контактов.

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

#mailserver
​​Ребята, час ИКС всё ближе. Яндекс повторно сделал рассылку на тему того, что с 17 апреля почта для домена станет платной для всех аккаунтов, где больше 3-х почтовых ящиков. Надо срочно переезжать, кто не хочет платить. Откладывать нельзя, так как предвижу какие-то ограничения на скачивание почты из ящиков из-за того, что переезжающих будет много и скачать быстро свою почту не получится.

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

📌 Могу порекомендовать следующие варианты, от простого к сложному.

1️⃣ Аналогичный сервис от mailru — biz.mail.ru. Пару-тройку месяцев назад я заходил туда и явно видел информацию о том, что есть бесплатный тариф. Сейчас вообще не вижу никакой информации о тарифах и тем более о том, что есть бесплатная версия. Тем не менее видел в отзывах информацию, что почта всё ещё бесплатна. Подтвердите или опровергните те, кто наверняка знают и пользуются этой почтой бесплатно.

2️⃣ Купить любой виртуальный хостинг у крупного хостера. С виртуальным хостингом почти всегда в комплекте идёт возможность создавать и пользоваться почтовыми ящиками. Это самый дешёвый вариант для небольших ящиков, так как оплата на таких тарифах обычно идёт за занимаемое место, а не количество ящиков. Если вы настроите почтовый сервер у себя локально, а этот сервис будете использовать только для пересылки, то вам хватит самого дешёвого тарифа за 100-150 р.

3️⃣ Купить VPS или дедик и развернуть там почтовый сервер из конструктора. Сейчас очень много готовых решений, где вручную нужно будет только DNS записи настроить, а всё остальное будет развёрнуто автоматически. Вот моя публикация с подборкой таких решений. В ней не хватает Mail-in-a-Box, которую обозревал позже. Мне очень интересен сервер Tegu, который хочу развернуть и попробовать. Надеюсь, получится на этой неделе. Напишу статью после тестов.

4️⃣ Настроить свой собственный сервер, например, на базе postfix. Моя свежая и подробная статья. Если внимательно повторите написанное, то всё получится. Получил много подтверждений того, что в статье нет ошибок и по ней получается настроить работающий полнофункциональный почтовый сервер с базовой защитой от спама и веб интерфейсом.

5️⃣ Если вам нужен сервер только для отправки почты с сайта или для рассылок, по советую специализированные решения для этого: Postal и Cuttlefish.

6️⃣ Для админов Windows отдельно порекомендую простой, надёжный и бесплатный сервер hMailServer.

Напомню, что перенести почту можно с помощью программ imapsync и imapcopy. Либо самый простой вариант — в любом imap клиенте подключить 2 почтовых ящика и перенести письма из одного в другой. Рекомендую для этого Thunderbird.

Расскажите, куда сами переехали или будете переезжать. Может я забыл какой-то простой и удобный вариант?

#mailserver
​​Продолжу тему переезда и переноса почтовых ящиков. А также их бэкапа из облачных сервисов. Ранее я рассматривал инструменты для переноса писем с одного imap ящика в другой. Сейчас расскажу про imap-backup, с помощью которого можно сохранить локально архив почты из любого imap ящика.

Если вам не нужно переносить прямо все ящики, либо всю почту из ящиков, можно перенести только то, что, к примеру, не старше 3-х лет, а всё остальное скачать и положить в архив локально. Потом можно без проблем открыть архив и посмотреть там почту.

Imap-backup умеет скачивать почту по imap и сохранять её локально в формате mbox. Это по сути один большой текстовый файл, где письма идут один за другим. Программа написана на ruby, так что проще всего её поставить через gem. На Debian это выглядит следующим образом:

# apt install rubygems
# gem install imap-backup

Теперь можно запустить программу и выполнить первоначальную настройку через консоль:

# imap-backup setup

Либо сразу нарисовать конфиг в формате json и положить его в ~/.imap-backup/config.json. Вот рабочий пример для Яндекса, проверил лично:

{
 "version": "2.0",
 "accounts": [
  {
   "username": "zabbix@serveradmin.ru",
   "password": "topsecretpassword",
   "local_path": "/root/.imap-backup/zabbix_serveradmin.ru",
   "folders": [

   ],
   "server": "imap.yandex.ru"
  }
 ]
}

Для доступа по imap в ящике нужно создать пароль для приложения. В самих настройках ящика есть инструкция для этого.

Программа выкачивает почту в отдельно созданный каталог для ящика. Каждая папка imap — отдельный файл mbox. Далее эту почту можно подключить к Thunderbird. Для этого надо установить расширение ImportExportTools NG из официального магазина. После установки в разделе Инструменты в самом конце будет раздел ImportExportTools, через который можно выполнить импорт папки mbox.

Я всё проверил лично. Работает хорошо, проблем не возникло. Можно таким образом настроить регулярный бэкап почты из любого почтового ящика, или группы ящиков. Например, того же Gmail. С ним программа тоже работает. Imap-backup — хороший инструмент для массового бэкапа почтовых ящиков облачных сервисов.

#mailserver
​​У меня наконец-то дошли руки установить и настроить почтовый сервер Tegu (бесплатную версию). Так что теперь могу поделиться своими впечатлениями и первым опытом работы. Я планирую написать по нему подробную статью, когда немного накопится опыт использования. Когда она выйдет неизвестно, поэтому решил сразу заметку сделать.

Плюсы:

1️⃣ Простая и быстрая установка. Весь сервер это один скомпилированный бинарник, написанный на Go и один конфигурационный файл к нему. Никаких зависимостей от системных библиотек. Весь код реализован самостоятельно. Работает практически на любом линуксе. Скачиваем бинарник, рисуем конфиг, systemd юнит и всё, установка завершена. Обновление — это просто замена бинарника новой версией.

2️⃣ Сервер включает в себя службы smtp, imap и панель управления через веб интерфейс. Это очень удобно по сравнению с традиционными связками, когда надо отдельно ставить smtp, отдельно imap и отдельно какое-то управление. Установка и запуск базового сервера занимает буквально 10 минут, если вы делаете это не первый раз. И уже можно подключаться любым почтовым клиентом. Встроенного веб клиента нет.

3️⃣ В сервере реализована поддержка протокола milter, так что многие привычные службы, которые мы подключали через milter к postfix теоретически можно подключить и здесь. Как на деле это реализовано, надо смотреть и разбираться.

4️⃣ В сервер встроен функционал белых/чёрных спискв IP/email отправителей, технология Greylist, проверка по спискам DNSBL, проверка наличия SPF записи и блокировка в случае отсутствия таковых записей, глобальные правила сортировки и фильтрации, dkim. Также реализована защита от перебора паролей, типа fail2ban.

5️⃣ Сервер поддерживает хранение своего состояния в базе sqlite, а пользователей в json файле (пароли зашифрованы). По мне так это очень удобно для небольших серверов. Нет необходимости поднятия полноценной базы данных. Хранить там всё равно особо нечего и sqlite в этом плане отличное решение.

6️⃣ Для каждого домена можно указывать своё хранилище почты. Удобно для управления многодоменными серверами.

7️⃣ Есть возможность хранить почту в формате Maildir. Это позволяет легко бэкапить или переносить почту между серверами. К примеру, чтобы перенести почту с сервера postfix, достаточно просто скопировать почту из ящиков.

🔴 Минусы:

1️⃣ Малоинформативный лог. По умолчанию пишется в journald, настроек для него практически нет. Я много времени потратил на то, чтобы запустить защищённые соединения. Указал путь к сертификатам let's encrypt, но служба на портах 465 и 993 не запускалась. В логах пусто, ошибок нет. Уже в процессе разбирательства по чисто своей догадке я предположил, что возможно у сервера нет доступа к сертификатам. Tegu запускается от системного пользователя mail. И у него действительно нет доступа к стандартной директории /etc/letsencrypt/live. Когда исправил это, почтовый сервер запустился на указанных портах и шифрованные подключения заработали.

2️⃣ В документации указано, что сервер работает только с доверенными сертификатами, самоподписанные не поддерживаются: "Использование самоподписанных сертификатов вызовет ошибку".

3️⃣ Документация немного сумбурная. Не всё в ней отражено, что-то дублируется в разных статьях (например, установка и ещё одна установка и эксплуатация, где описана настройка кучи веб клиентов, которые к серверу не имеют отношения). Например, у меня не стартовала служба smtp на 25 порту. Оказалось, что надо было создать через веб интерфейс очередь smtp. Для меня это было неочевидно.

💡Впечатление от сервера и его концепции положительные. Мне кажется, разработчики заняли очень удачную нишу. Аналогов просто нет, где можно взять и быстро поднять почтовый сервер с базовым функционалом. Все бесплатные решения — это связки и обвес вокруг postfix + dovecot + БД + dkim + какой-то интерфейс управления. Несмотря на то, что сервер видел в первый раз, я его настроил за пару часов чтения доков. Взял VM: 1 CPU, 1GB памяти 💪🏻.

#mailserver #tegu #отечественное
​​Для тех, кто впервые настраивает веб сервер, бывает странно видеть названия imap папок вида:
.&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-
.&BBoEPgRABDcEOAQ9BDA-
.&BCcENQRABD0EPgQyBDgEOgQ4-
Создаётся впечатление, что с сервером какие-то проблемы.

На самом деле это не проблема. Почему-то исторически сложилось, что названия imap директорий хранятся в кодировке UTF-7. Для англоязычных названий проблем нет, а вот кириллические понять невозможно.

Вы можете воспользоваться любым преобразователем кодировок либо в виде веб сервиса, либо прямо в консоли с помощью iconv -f UTF7 -t UTF8. Ещё проще скопировать на почтовый сервер готовый скрипт. И пользоваться им, когда понадобится. Текст можете проверить, там ничего особенного.

# git clone https://github.com/Yar4e/lsmaildir
# cd lsmaildir
# chmod u+x lsmaildir
# ./lsmaildir /opt/tegu/mail/zeroxzed.ru/vladimir/.maildir
.Отправленные   .&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-
.Архив          .&BBAEQARFBDgEMg-
.Корзина        .&BBoEPgRABDcEOAQ9BDA-
.Черновики      .&BCcENQRABD0EPgQyBDgEOgQ4-
.Спам           .&BCEEPwQwBDw-
cur             cur
new             new
tmp             tmp

#mailserver
Расскажу историю про то, как я перенёс почту в отдельно взятой компании с Яндекса. Сразу скажу, что это не описание оптимального варианта, или какая-то рекомендация, как поступать вам. Тут ситуация специфическая. Я просто дам информацию, которая кому-то может оказаться полезной.

В компании есть Windows Server, где установлен Kerio Mailserver. Исторически так сложилось, что через него почта почти никогда не отправлялась напрямую из-за проблем с доставкой, так как компания часто переезжала с места на место в различных промзонах, где нет стабильного интернета и электричества. Иногда это был мобильный интернет.

Последние несколько лет почта работала через Яндекс по следующей схеме. Для всех сотрудников были созданы почтовые ящики. Локальный Kerio Mailserver подключался к этим ящикам и забирал почту к себе по pop3. Сами пользователи подключались к локальному серверу и забирали почту через него. Отправка осуществлялась у пользователей напрямую через Яндекс, хотя с другим почтовым оператором вся отправка централизованно настраивалась тоже через локальный сервер с помощью сервера ретрансляции. Но Яндекс такую работу не поддерживает. Там для каждого пользователя должна быть своя учётная запись.

Схема на самом деле удобная и гибкая. Изначально так настроил не я. Когда впервые увидел, подумал, что как-то сложно всё это настраивать в нескольких местах. С учётом того, что я умею настраивать почтовые сервера и имею большой опыт по их обслуживаю, не оценил решение. Но после парочки переездов и смены почтового оператора понял, что на самом деле это удобно. В ящиках много почты. У кого-то по 50 гигов. Люди привыкли работать в локальных программах, а не через веб интерфейс. У некоторых может быть подключено по 5-7 ящиков. Без локальной программы работать с таким количеством ящиков неудобно.

Встала задача переехать с Яндекса. У компании сайты живут на Masterhost. К услуге виртуального хостинга полагается неограниченное количество почтовых ящиков. Ограничение одно — 7 гигабайт места под почту включены в тарифный план. В итоге я просто создал все ящики в Masterhost (там удобная админка для этого), переключил MX записи на этого провайдера. А в локальном почтовом сервере настроил сбор почты по pop3 вместо Яндекса с Masterhost, и отправку через него же.

Вот и весь переезд. Не нужно ни пользователей трогать, ни почту переносить. Это уже не первый подобный переезд. До Яндекса тоже была платная услуга почты от другого хостера. Для небольших компаний, где есть возможность установить сервер на своё железо, хороший вариант. Не нужно беспокоиться о доставке почты и борьбы со спамом. Это на себя берёт хостер в данном случае за символические 250 р. в месяц — стоимость услуги виртуального хостинга, где живёт сайт.

Подобную схему можно реализовать и с помощью Linux сервера, но будет посложнее. В Kerio Mailserver все настройки делаются мышкой через консоль управления. Это штатный функционал. В Linux придётся настраивать отдельные программы, типа Fetchmail для сбора почты и настройки relay для отправки почты через сторонний сервер.

Подведу итог. Плюсы такой схемы следующие:
вся почта хранится локально, быстрый доступ к объёмным ящикам
удобный бэкап всей почты
нет привязки к ip адресу офиса, легко изменить оператора почты или переехать самим офисом
не нужно самому следить за рейтингом ip адреса и проходимостью почты
антиспам средствами хостера
если у вас проблемы с интернетом, почта накапливается у хостера и не пропадает

Минусы:
 более сложная настройка пользователей, их надо создавать два раза — у хостера и локально, настраивать сбор почты
 за услугу придётся платить некоторую сумму
 нужен свой сервер

#mailserver
​​Мне посоветовали посмотреть на почтовый сервер Axigen Mail Server, про который я вообще ни разу не слышал. С интересом изучил его, но быстро разочаровался. Это коммерческий продукт с очень ограниченной бесплатной версией: 5 доменов, 5 пользователей, 5 групп. С такими ограничениями этот сервер подходит только для личного использования.

Тем не менее, сервер мне понравился. Разворачивается он очень просто и быстро. Для запуска есть всё, что только можно: deb и rpm пакеты, docker образ, образ VM для VMWare и VirtualBox, Helm чарт для k8s, установщик для Windows.

Я выбрал Docker для запуска. В лучших традициях монолита всё, что нужно для работы, упаковано в один образ. Это просто праздник. Вместо дюжины контейнеров тут только один. Запускаем:

# docker run --name=axigen -dt -v ~/axigen_var:/axigen/var \
-p 443:443 -p 9443:9443 \
-p 993:993 -p 995:995 \
-p 25:25 -p 465:465 \
-p 9000:9000 -p 7000:7000 axigen/axigen

Функционал типичный для личного органайзера:
почта
календарь
адресная книга
планировщик дел
заметки

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

Решил сделать заметку про этот почтовый сервер, потому что понравился веб интерфейс. Может кому-то тоже приглянется, и он выберет себе этот инструмент для личного использования в качестве персональной почты и всех остальных сервисов. Удобно, когда всё это интегрировано в единую систему. Из письма сразу же можно сделать заметку или задачу. У меня заметки, календарь, почта, задачи — разные сервисы. И это неудобно. А тут всё в одном месте.

Сайт / Demo

#mailserver #заметки
Дам маленький совет по настройке почтового сервера. Мне задали вопрос в комментариях к статье, который напомнил об одной небольшой ошибке. Хочу вас предостеречь от неё.

Как-то раз в одной компании настраивал локальный почтовый сервер. Развернул привычную связку на базе postfix + dovecot и сделал веб интерфейс roundcube. Настроил всё это на одном сервере. Для простоты настройки, сделал доменное имя сервера mail.example.com и для настройки почтовых клиентов, и для веб интерфейса. Сотрудники пользовались и тем, и другим, в зависимости от личных предпочтений. Доступ был из локальной сети.

Со временем появилась необходимость убрать веб интерфейс с почтового сервера на отдельный веб сервер. Парк сервисов и серверов увеличился, захотелось всё упорядочить. В общем случае я рекомендую веб интерфейс настраивать отдельно, не на самом почтовом сервере.

В итоге возникла проблема с тем, что все привыкли к адресу веб интерфейса mail.example.com, который резолвится в IP адрес почтового сервера, а веб сервер имеет другой IP. Пришлось сделать отдельное доменное имя для веб интерфейса - webmail.example.com, а на почтовом сервере оставить nginx с проксированием запросов к mail.example.com на новый веб сервер.

В целом, это некритичная мелочь, но всё равно неудобство. Лучше для почтового сервера выделить отдельное доменное имя и больше его нигде не использовать. Одна виртуалка, один сервис, одно доменное имя. Когда настраиваешь, думаешь, зачем заморачиваться с разными именами. Разные настройки, разные сертификаты получать и т.д. Удобно же, когда всё с одним именем. А на самом деле неудобно. Потом больше времени потеряешь, чтобы разделить сервисы.

#mailserver