Приветствую!
Давно не писал статей, все руки не доходили, наконец то, выбралось время и решил поделиться с Вами решением одной задачи.
Немного предыстории
В конце 2018 довелось участвовать в создание инфраструктуры одной поликлиники и одна из задач была организация почтового сервера. По желанию заказчика, предпочтение было отдано внешним службам, а именно pdd.yandex.ru. На тот момент требовалось не более 3-5 пользователей, и это решение посчитали оптимальным и самым быстрым. Но время шло, задачи менялись и в конце 2022 г. число учетных записей выросло до 95 из них активных, в повседневной работе, 25. Когда Яндекс ввел плату за каждого пользователя, было принято решение о переводе всей почты на локальное размещение. К тому же, весь доступ к почте, предполагает только локальное использование, без доступа из внешней сети. Перелопатив кучу вариантов, от коробочных решений до самосборной конфигурации, пал выбор на Kolab Groupware. Выбор был обусловлен желанием работы через WEB интерфейс, с общей адресной книгой, календарем, списком дел и файловым облаком. Плюшек хватало с лихвой, но возник ряд трудностей, о способах решения которых, я напишу ниже.
Исходные данные:
Сервер: контейнер на ProxMox, 6Gb RAM, 120 Gb SSD, 4 Core.
OS: Debian 11 (все Linux сервера в компании — Debian 10-11 ).
VPS от REG.RU с внешним IP, для отправки почты(провайдер выделяет внешний IP но нет возможности сделать PTR-запись).
Приступим
Kolab рассчитан на использование в среде RHEL, в рекомендациях RHEL 8, но пакеты под Debian 11 есть, что только подкинуло проблем, разбираться с ними пришлось не мало. Но это всё лирика, приступим к делу.
Начнем с установок ключей для репозиториев:
wget -q -O- https://ssl.kolabsys.com/community.asc | apt-key add -
Если вдруг, получим ошибку, как я, то не переживем, просто в системе нет пакетов, исправляем это:
apt install gnupg2
Теперь прописываем сам репозиторий:
nano /etc/apt/sources.list.d/kolab.list:
deb https://mirror.apheleia-it.ch/repos/Kolab:/16/Debian_11.0/ ./
deb https://mirror.apheleia-it.ch/repos/Kolab:/16:/Testing/Debian_11.0/ ./
deb-src https://mirror.apheleia-it.ch/repos/Kolab:/16:/Testing/Debian_11.0/ ./
deb-src https://mirror.apheleia-it.ch/repos/Kolab:/16/Debian_11.0/ ./
Указываем приоритет репозитория:
nano /etc/apt/preferences.d/kolab:
Package: *
Pin: origin mirror.apheleia-it.ch
Pin-Priority: 501
Обновляемся и ставим пакеты:
apt update && apt install kolab
Это была самая простая часть, которая есть в документации.
Дальше нам надо получить сертификат SSL, инструкций куча, от самописных до Let's Encrypt. Вместе с kolab, ставиться сервер Apache2, на него был получен сертификат от Let's Encrypt его и будет использовать. Подготовим его для применения:
cp /etc/letsencrypt/live/mail.example.ru/cert.pem /etc/ssl/private/cyrus-imapd.pem
cp /etc/letsencrypt/live/mail.example.ru/privkey.pem /etc/ssl/private/cyrus-imapd.key
usermod -a -G ssl-cert cyrus
chmod 0755 /etc/ssl/private
chmod 0644 /etc/ssl/private/cyrus-imapd.key
Приступаем к настройке kolab:
setup-kolab --with-php-ini=/etc/php/7.4/apache2/php.ini
Все делаем по умолчанию и по вашему желанию. В идеале, на этом этапе, все должно было бы уже работать, но по факту система еще требует работы руками. Приступаем к исправлению.
Изменяем пути:
sed -i 's#/var/lib/imap/#/var/lib/cyrus/#' /etc/cyrus.conf
sed -i 's#/var/lib/imap/#/var/lib/cyrus/#' /etc/imapd.conf
sed -i 's#/var/lib/imap/#/var/lib/cyrus/#' /etc/postfix/ldap/transport_maps.cf
sed -i 's#/var/lib/imap/#/var/lib/cyrus/#' /etc/postfix/transport
Пакеты kolab собраны с путями RHEL, я же изменил их на пути DEB систем.
В системе GUAM добавляем пути к сертификату:
nano /etc/guam/sys.config:
{ keyfile, "/etc/ssl/private/cyrus-imapd.key" }
Добавляем сертификаты в postfix:
postfix tls deploy-server-cert /etc/ssl/private/cyrus-imapd.pem /etc/ssl/private/cyrus-imapd.key
Перенастраиваем postfix:
postmap /etc/postfix/transport
Добавляем путь для сохранения архивных сообщений:
echo "partition-archive: /var/spool/ cyrus/archive" >> /etc/imapd.conf
Перезагружаем систему:
reboot
B радуемся рабочей почтовой системе, если бы не но....
По умолчанию, в Debian у Amavis отключены проверки на спам и вирусы, это дело надо исправить:
Редактируем
nano /etc/amavis/conf.d/15-content_filter_mode
И снимаем комментарии, со строк с началом @@bypass_
Так как у нас есть VPS, который выступает в качестве сервера пересылки, то не забываем настроить SmartHost. На этом основные шаги, для запуска почтового сервера, закончены. Осталось настроить DKIM, проброс портов и DNS. Но этих инструкций куча в интернете. Если возникнет потребность, с радостью добавлю информацию в эту статью.
В качестве материалов, для реализации данного проекта, использовались статьи и форумы из интернета, в частности:
https://kb.kolabenterprise.com/
https://habr.com/ru/articles/260527/
Спасибо за внимание!
Комментарии (24)
BugM
03.07.2023 18:25+8Установить почтовик это не проблема. Теперь попробуйте сделать так чтобы с него письма везде доходили, а к вам спам не доходил. Ну хотя бы большая часть спама не доходила.
Почтой от больших корпораций пользуются не потому что пару пакетов поставить не могут.
Teon_501 Автор
03.07.2023 18:25+1Полностью согласен, но эта проблема уже была решена, почта отправляется через VPS, там чистый postfix настроенный только на отправку почты с определенного IP и определенного домена. Настроены все обратные зоны и записи DNS. Со спамом борется amavisd-new + SpamAssassin, в добавок к нему greylisting. И конечно же RBL, а именно строка в Postfix
submission_recipient_restrictions = [...] reject_rbl_client zen.spamhaus.org, reject_rbl_client ix.dnsbl.manitu.net, reject_rbl_client bl.spamcop.net, [...]
BugM
03.07.2023 18:25+4И как хорошо работает?
У корпораций хорошо это 0 не доставленных исходящих, 0 не полученных входящих и что-то неизмеримо малое стремящееся к 0 ложно положительного спама. При этом ложно отрицательного спама тоже крайне мало.
Пара недоставленных писем в год могут стоить на порядок больше годовой абонентки того же Яндекса. Если почта для работы используется.
Teon_501 Автор
03.07.2023 18:25Очень хорошо, а вот с Yandex были проблемы, у одного из получателей (одна довольно крупная нефтенная компания), никак не хотела получать письмо именно от яндекса и именно от почтового домена, но если отправка была от учетки типа mail@yandex.ru, то все приходило. Как оказалось была проблема в неверной настройке DNS
oller
03.07.2023 18:25+2Неверную настройку сделать в Яндекс ещё умудриться нужно, а свой почтовик это сотни настроек и схем и после этого все равно в спам кладется, проходя все проверки, просто по внутренним алгоритмам, чаще всего этот алгоритм сводится к тому что ты новый ip адрес с всего месячной давности существования. И кладет в один ящик спам во второй не спам, хоть чё делай.
Отправьте за день 20-100 писем на yahoo при любых своих навороченных настройках;)
Свою систему всегда нужно развивать и поддерживать, бороться с вирусами и спамом и т.д не говоря про обновления.
Вашу статью надо было назвать аналог zimbra и привести примеры плюсов и минусов, а вы написали статью из 90х для тех кто не понимая вводит команды получая неизвестно что
avelor
03.07.2023 18:25Rbl фу. Имхо их можно использовать только для увеличения скора в байесовской системе. Ну и как условно-коробочное решение неплох proxmox mail gateway - желательно к нему только движок антивируса повеселее прикрутить
PereslavlFoto
03.07.2023 18:25+1сделать так чтобы с него письма везде доходили
Провайдерский релей.спам не доходил
Если не публиковать адрес на досках объявлений и на форумах, и если не регистрироваться всюду, тогда волны спама нет.xSVPx
03.07.2023 18:25Релей штука такая. Амазоновский ses к примеру очень не любит попыток отправки по несуществующим адресам. Абсолютно непонятно как с помощью него обрабатывать формы подтверждения регистрации, в которые спамботы пишут несуществующие адреса.
Если не публиковать адрес, то всего один заболевший вирусом человек у которого есть письмо от вас и вы сразу во всех спамлистах...
PereslavlFoto
03.07.2023 18:25Какова итоговая стоимость этого решения? Сколько заказчик заплатил за всё это?
Teon_501 Автор
03.07.2023 18:25+1Точную сумму разглашать не буду, но эквивалент месячной стоимости 50 пользователей yandex. Аппаратные ресурсы предоставлены заказчиком.
PereslavlFoto
03.07.2023 18:25+1Аппаратные ресурсы предоставлены заказчиком.
Вот это важное условие означает, что вы не знаете общей суммы. Значит, на мой вопрос может ответить только сам заказчик.
Спасибо за ответ с соотношением!
Yumado
03.07.2023 18:2550*200, да ладно пусть будет 50*400. 20 000 руб.
нде. без сопровождения работать не будет. так что плюс еще регулярные расходы на тех поддержку.
shachneff
03.07.2023 18:25Какая своевременная тема. Коллеги, ищу готовое или около того решение: свой почтовый сервак, исключительно для внутренних нужд и специфичного взаимодействия с 5ю контрагентами. Фича: у юзеров нет доступа ни веб, ни imap/pop/smtp. Все сообющения на их адрес доставляются ботом в телеграм.
Исходящей почты нет, саморегистрации нет. Есть получение всех писем от 5 доменов в телегу.
P.S. давно были у сотовых операторов виртуальные почтовые ящики, написав на которые содержимое приходило в смс
Vizmaros
03.07.2023 18:25У постфик maildir, можно читать файлы и все новые пересылать в телеграм. Разве что с переводом из base64 проблемы возникнут.
Johan_Palych
03.07.2023 18:25Предустановка:
FQDN в /etc/hostname
389 Directory Server - hostname resolve (запись в DNS и/или в /etc/hosts)Не стоит использовать apt-key add - Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)
"Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)) The apt-key man page mentions that the "use of apt-key is deprecated, except for the use of apt-key del in maintainer scripts to remove existing keys from the main keyring. What's more, "apt-key will last be available in Debian 11 and Ubuntu 22.04."
Рабочий вариант:
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release wget -q -O- https://ssl.kolabsys.com/community.asc | sudo gpg --yes --dearmor --output /etc/apt/trusted.gpg.d/kolab.gpg
Добавляем репу одной командой:
sudo tee /etc/apt/sources.list.d/kolab.list <<EOF deb https://mirror.apheleia-it.ch/repos/Kolab:/16/Debian_11.0/ ./ # deb-src https://mirror.apheleia-it.ch/repos/Kolab:/16/Debian_11.0/ ./ EOF
Приоритетет установки:
sudo tee /etc/apt/preferences.d/kolab.pref <<EOF Package: * Pin: origin mirror.apheleia-it.ch Pin-Priority: 501 EOF
MaxStirlits
03.07.2023 18:25Зачем столько сложностей если есть communigatepro, всё что нужно и ещё много чего из коробки и без танцев на статью на хабре?
camojiet
03.07.2023 18:25Шалом православные!
Самый лучший бесплатный почтовый комбайн, который я встречал - это mailcow.
Всё есть, работает из коробки. Раньше настраивал руками exim + dovecot + roundcube, тратил кучу времени на борьбу со спамом, обновление. Вспоминаю как страшный сон. Для небольшой компании - самое то.
crazybomex
03.07.2023 18:25Здравствуйте, хочу уточнить у Вас один вопрос.
Поликлиника частная или гос?
iskatel
" К тому же, весь доступ к почте, предполагает только локальное использование, без доступа из внешней сети. "
Профи уже на этой фразе пояснил бы заказчику, что через некоторое время этот пункт поменяется. И лучше бы сразу делать так, чтобы потом не переделывать.
"Теперь прописываем сам репозиторий:"
эти вещи есть в десятках статей, но если вы ставите локальный почтовый сервер, основные проблемы вовсе не в вводимых при установке командах.
У вас будет немало нюансов настройки, чтобы вы не влетели в спам-листы.
вот это
" у нас есть VPS, который выступает в качестве сервера пересылки, то не забываем настроить SmartHost. "
решает лишь часть спам-проблем.
И за сервером потом прийдётся постоянно смотреть и корректировать, если что, те. работа по саппорту (если за неё будут платить).
В случае почтовго-домена-на-обслуживании у кого-то жирного это проблемы провайдера, а не ваши.
loginoffvich
я понял что они переносят яндекс в местный local - если пулялку вместе настроят то наверное не попадут в junk хотя у жирных любой junk если нет диалога а у новых акков второе письмо без ответа уже spam&block a из gmail с outlook в сторону ya&mail вообще без извещения ситуации как в /dev/nul всё уходит и только между gmail c outlook как-то яснее ситуация (либо сфетофор - либо прям причина) ... все эти анти уже держится на работке контактов - фаил не даёт отправить пока текстом не согласуешь отправку или блочат за bitly ссылку а потом оказывается что причина то-что получатель убрал синхронизацию gmail в локаль (какие-то 5 мб запаришься переслать) + блоки возникают когда сервис не может понять содержание текста письма или теряет ветв дискусий в цитировании
Teon_501 Автор
Уже перенесли, пол года полет нормальный. Переход длился месяц, в этот период в качестве MX использовали и свой сервер с приоритетом 20 и сервер yandex с приоритетом 40