Введение
Если у вас еще нет почтового сервера, то читайте как установить и настроить почтовый сервер postfix, а если нет сервера мониторинга, то соответственно вот это — установка и настройка zabbix на centos или то же самое на debian. Для мониторинга я буду использовать известную утилиту pflogsumm, которая анализирует почтовый лог postfix. В разных системах он может называться по-разному:
- /var/log/mail.log в debian и ubuntu
- /var/log/maillog в centos и freebsd
Само содержание будет одно и то же, поэтому статья будет актуальна для любого сервера с postfix и любой версией мониторинга zabbix. Я за основу возьму bash скрипт, который чаще всего попадается, если в поисковике поискать что-то на тему мониторинга postfix в заббиксе. Не знаю, кто у кого его скопировал изначально, поэтому автора указывать не буду. Сам скрипт достаточно простой, я расскажу подробно что он делает и как работает, чтобы вы понимали и по возможности могли его изменить так, как вам потребуется.
Я буду показывать на примере системы CentOS. Нам понадобится установить утилиту pflogsumm. Делается это просто.
# yum install postfix-pflogsumm
Введение
Данная статья будет актуальна для тех, кто сам выполнил установку и настройку postfix или воспользовался готовой сборкой на базе iredmail. Это что касается материалов моего сайта. А в целом все описанное ниже будет актуально для любого почтового сервера, который хранит почту в формате maildir.
Скажу пару слов, почему именно maildir. Лично я этот формат использую за его удобство. В нем каждое письмо это отдельный файл, который можно посмотреть любым текстовым редактором. Эти файлы удобно бэкапить, анализировать содержимое, сортировать по каким-то признакам. В общем, с ними можно работать как с обычными текстовыми файлами. На основе этих плюсов и выполняется вся дальнейшая работа в статье. Из минусов вижу только один — огромное количество мелких файлов создают большую нагрузку на дисковую подсистему.
Приведу для наглядности пример, который позволит оценить нагрузку на диски. Для синхронизации с помощью rsync почтовой базы объемом примерно 1 терабайт, расположенной на raid10 обычных 3.5 sata дисков, на одиночный такой же диск для бэкапа, уходит где-то пару часов в основном на сравнение файлов между источником и приемником. Само копирование файлов проходит быстро, но чтобы сравнить изменения за день, приходится выполнять длительную операцию. При этом в целом работа пользователей (~30-40 человек) с этой базой вполне комфортна, каких-то тормозов не наблюдается.
То есть по сути, для такого количества пользователей, сервером может быть обычный десктопный компьютер с 2-4 обычными sata дисками. Хватит производительности любого процессора и примерно 2-4 гигабайта оперативной памяти. Отдельный вопрос, конечно, к надежности обычного системника. Я сервера на них не рекомендую собирать, но при большом желании можно.Приведенные далее скрипты для очистки почтовой базы писались в разное время на разных серверах. Иногда может показаться, что все сделано нелогично или как-то сложно. Громоздкие конструкции часто возникали там, где появлялись проблемы с пробелами или спецсимволами в именах папок на русском языке, которые при переводе в UTF-7 (кодировка названия imap папок в dovecot) превращаются в весьма неудобные для обработки строки. Дальше будет понятно, что я имею ввиду.
Перейдем теперь к конкретным примерам.
DMARC
DMARC — это тоже TXT запись в которой указывается политика для принимающего сервера, что делать с письмами не прошедшими проверку SPF и DKIM. Вот пример DMARC записи:
Здесь:
- — версия DMARC. Всегда DMARC1
- — что делать с письмами не прошедшими проверку. Может быть none — ничего не делать, только слать отчет, quarantine — добавлять письмо в спам, reject — отклонять письмо.
- — политика отправки отчетов; 0 — отправлять отчет только если письмо не прошло и DKIM и SPF; 1 — если не прошло или DKIM или SPF; s — не прошло SPF; d — не прошло DKIM
- — адрес на который будут слаться отчеты от почтовых серверов в случае обнаружения, не прошедших проверку, писем
Еще несколько примеров работы с почтовой базой
Этот пример будет актуален, если вы используете почтовые ящики, куда копируется абсолютно вся переписка вашего сервера. Допустим, у вас есть ящик out@mailsrv.ru, куда сохраняется вся уходящая корреспонденция. Если на сервере идет активная переписка, то писем в ящике будет много и искать с помощью какого-то imap клиента будет неудобно, так как он может либо тормозить на большом списке писем, либо вообще отваливаться по таймауту и поиск или сортировка будут невозможны с его помощью. Тогда на помощь придут простые скрипты в консоли сервера. Найдем в этом ящике все письма, отправленные в период между первым и седьмым сентября 2017 года и скопируем их в отдельный ящик.
По сути тут просто использовались ключи к команде find. У нее их так много, что я для всех прикладных задач всегда храню готовые конструкции, чтобы заново не вспоминать все ключи и возможности.
Еще полезно бывает посмотреть размер почтовых ящиков. Некоторые пользователи имеют в разы больший объем ящика, чем все остальные. Есть любители хранить в почте презентации, пересылать разбитые на части архивы и т.д. Иногда приходится вручную проверять размеры ящиков, чтобы отдать команду на очистку заполненных сверх меры. Сделать это можно простой командой в директории с ящиками:
Команда выведет размеры всех ящиков и отсортирует их по мере увеличения объема, но при этом объем покажет в байтах, что не очень удобно. Можно вывести директории по алфавиту, но с размером в привычных мегабайтах или гигабайтах, но уже без сортировки.
Еще удобнее отправить сразу вывод в текстовый файл с датой в имени файла, чтобы потом было удобно сравнить с тем, что получилось после чистки почтовой базы.
Тут можно придумать много всяких способов отсортировать данные для более удобного восприятия, или потом автоматически сравнить размеры ящиков. Я не занимался этим.
Решение:
Для выявления проблем можно использовать различные средства.
Инструменты
- postsuper – утилита обслуживания почтовых очередей. Одним из применений является удаление какого-либо сообщения или повторная установка его в очередь на доставку.
- postqueue также создана для управления очередями. ОТличие от postsuper в том, что для работы c postsuper требуются права root, а для postqueue таких широких полномочий не нужно, хотя за счет этого теряется часть функционала.
postcat – утилита, позволяющая посмотреть содержимое файла почтовой очереди.
pfqueue — консольная утилита управления очередью
pflogsumm — cкрипт сбора статистики
Примеры команд и командных конструкций:
Инициировать немедленную доставку:
postsuper -r ALL; postfix flush
Толкнуть конкретное письмо по ID:
postsuper -r ID
Удалить письмо по ID:
postsuper -d ID
Инициировать внеплановый процесс отправки сообщений, присутствующих в очереди:
postqueue -f
Показать содержимое очереди:
postqueue -p
Показать всех получателей, кому письма не были доставлены
for i in `find /var/spool/postfix/defer/ -type f`; do cat $i | grep recipient | sed 's/=/ /' | awk '{print $2}'; done | sort | uniq
Просмотреть размеры очередей Postfix
for i in active bounce corrupt defer deferred flush hold incoming maildrop public saved trace; do echo -n "$i "; find "/var/spool/postfix/$i" | wc -l; done
Инициировать доставку накопившихся в очереди сообщений для домена test.ru:
postqueue -s test.ru
Просмотр отдельного сообщения:
postcat -q 5C4F468EC41 | less
Очистить из очереди домены по заданной маске:
mailq| ./agr_mailq.pl|grep -E 'MAILER-DAEMON|yahoo|\.de|\.fr|\.it|\.ch'|awk '{print $1}'\ | tr -d '*!'|xargs -J{} -n1 postsuper -d {} deferred mailq| ./agr_mailq.pl|grep -E 'MAILER-DAEMON|yahoo|\.de|\.fr|\.it|\.ch'|awk '{print $1}'\ | tr -d '*!'|xargs -J{} -n1 postsuper -d {}
где agr_mailq.pl скрипт следующего содержания:
#!/usr/bin/perl my $cur_line=""; while(<>){ chomp(); if (/^+\s+\d+/){ print "$cur_line\n"; $cur_line=$_; } else { s/\s+//s; $cur_line .= "\t" . $_; } }
Отфильтровать и удалить из очереди только сообщения на 5 и более адресов разом:
mailq |./agr_mailq_big.pl| tr -d '*!'|xargs -J{} -n1 postsuper -d {}
где agr_mailq_big.pl:
#!/usr/bin/perl my $cur_line=""; my $counter=0; while(<>){ chomp(); if (/^+\s+\d+/){ if ($counter >= 5){ print "$cur_line\n"; } $cur_line=$_; $counter=0; } else { s/\s+//s; $cur_line .= "\t" . $_; $counter++; } }
Посмотреть список доменов в очереди и число сообщений для них:
mailq |./agr_mailq.pl |awk '{print $7}'|cut -d'@' -f2|sort|uniq -c|sort -r -n
Записав такие домены в файл, можно вручную отсеять нормальные домены и затем
разом удалить мусор из очереди:
mailq| ./agr_mailq.pl|grep -f ./spamdomains.list |awk '{print $1}'\ | tr -d '*!'|xargs -J{} -n1 postsuper -d {}
Удаление группы писем от определенного FROM (на примере MAILER-DAEMON):
FreeBSD: mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | xargs -I{} -n1 postsuper -d {} Linux: mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | xargs -I{} -n1 /usr/sbin/postsuper -d {}
Удаление группы писем от определенного FROM в статусе REQUIRE:
mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | tr -d '*' | xargs -I{} -n1 postsuper -d {}
Проблемы по файловой системе
Учитывайте, что Postfix не сможет корректно управлять очередью при использовании этих опций.
Проверьте где у вас расположена очередь сообщений и обеспечьте монтирование монтирование файловой системы с этой директорией без этих опций.
postconf queue_directory queue_directory = /var/spool/postfix
Или измените директорию командами:
mv /var/spool/postfix /home/ postconf -e queue_directory=/home/postfix service postfix restart
Если вы используете опцию noexec для /tmp, то при выполнении
dpkg-reconfigure postfix
Вы можете получить сообщение об ошибке наподобие этого:
Preconfiguring packages ... Can't exec "/tmp/postfix.config.49981": Permission denied at /usr/share/perl/5.10/IPC/Open3.pm line 168. open2: exec of /tmp/postfix.config.49981 configure 2.5.5-1.1 failed at /usr/share/perl5/Debconf/ConfModule.pm line 59
Временно перемонтируйте /tmp без noexec, после успешного завершения dpkg-reconfigure можно вернуть все обратно
Фильтрация писем на основе темы письма
Рассмотрим более сложный вариант предыдущего скрипта. Там мы фильтровали письма на основе содержимого служебных заголовков. Но если мы захотим отфильтровать почту по теме письма, то сходу у нас ничего не получится. С темой письма возникают сложности из-за того, что она закодирована в base64, если в ней используются русский язык. Вот простой пример. У нас есть письмо с темой «Как дела?». Используем base64 декодер и смотрим, как будет выглядеть тема сообщения в исходнике письма.
Как дела? - 0JrQsNC6INC00LXQu9CwPw==
А вот, что вы увидите в заголовке письма со всеми служебными добавлениями:
Subject: =?UTF-8?B?0JrQsNC6INC00LXQu9CwPw==?=
Вам нужно будет отбросить сначала кодировку =?UTF-8?, потом не знаю, что означающие символы B?, затем в конце еще вот это ?=. Так вы получаете искомую фразу. Теперь представьте, что кто-то ответит на это письмо. Тема сообщения станет Re: Как дела?. В base64 эта фраза будет выглядеть совершенно по-иному:
Re: Как дела? UmU6INCa0LDQuiDQtNC10LvQsD8=
И вот как в реальном заголовке:
Subject: =?UTF-8?B?UmU6INCa0LDQuiDQtNC10LvQsD8=?=
Сложность добавляет еще то, что разные почтовые клиенты используют разную кодировку в теме письма. Мне встречались как UTF-8, так и WIN-1251. То есть для того, чтобы нормально раскодировать и читать тему сообщения, вам нужно сделать обработку на декодирование, на отбрасывание служебных символов. Еще в процессе тестирования я заметил, что если вы используете не весь текст темы, а только ее часть, то закодированная строка поиска может немного не совпадать с той, что будет в теме письма. Изменения могут возникнуть из-за заглавных/строчных букв, пробелов, запятых и т.д. В общем, я не осилил эту тему, так как надо очень плотно погрузиться в предмет и написать много различных проверок и условий. У меня просто не хватило терпения все сделать красиво, чтобы скрипт работал надежно.
Поступил я в итоге по-другому, более просто и топорно, зато надежно. Допустим, вам нужно, чтобы какая-то переписка не хранилась на сервере дольше определенного времени. Это может быть конфиденциальная информация. Например, вы сканируете документы с отправкой на почту и вам нужно, чтобы сканы там не хранились бесконечно долго. Настраиваете на МФУ шаблон темы сообщения, добавляя в начало такую строку — !del. Затем переводите его в base64, добавляя еще фразы с Re: и Fwd: на случай, если эти письма могут куда-то пересылаться или писаться ответы. Конечно, сканеру вряд ли кто-то будет отвечать, но, возможно, для вашей темы сообщения это будет актуально.
!del | IWRlbA== |
Re: !del | UmU6ICFkZWw= |
Fwd: !del | RndkOiAhZGVs |
Дальше берете скрипт из предыдущего примера и меняете там строку поиска на новую:
grep -E -R -l -I "Subject:.*IWRlb.*|Subject:.*RndkOiAhZGVs.*|Subject:.*UmU6ICFkZWw.*" "$a" >> $copydir/$box/copy-$data_full.txt
Эта строка найдет во всех письмах, сформированных в список предыдущей командой, темы сообщения !del, Re: !del, Fwd: !del и скопирует пути и имена файлов в список. Потом вы можете на свое усмотрение работать с этим списком.
Еще несколько примеров работы с почтовой базой
Этот пример будет актуален, если вы используете почтовые ящики, куда копируется абсолютно вся переписка вашего сервера. Допустим, у вас есть ящик out@mailsrv.ru, куда сохраняется вся уходящая корреспонденция. Если на сервере идет активная переписка, то писем в ящике будет много и искать с помощью какого-то imap клиента будет неудобно, так как он может либо тормозить на большом списке писем, либо вообще отваливаться по таймауту и поиск или сортировка будут невозможны с его помощью. Тогда на помощь придут простые скрипты в консоли сервера. Найдем в этом ящике все письма, отправленные в период между первым и седьмым сентября 2017 года и скопируем их в отдельный ящик.
find /data/mail/virtual/out@mailsrv.ru/Maildir/*/ -newerBt '2017-09-01 00:00' -and -not -newerBt '2017-09-07 00:00' -and -type f | cpio -pdmv /data/mail/virtual/user@mailsrv.ru/Maildir/new
По сути тут просто использовались ключи к команде find. У нее их так много, что я для всех прикладных задач всегда храню готовые конструкции, чтобы заново не вспоминать все ключи и возможности.
Еще полезно бывает посмотреть размер почтовых ящиков. Некоторые пользователи имеют в разы больший объем ящика, чем все остальные. Есть любители хранить в почте презентации, пересылать разбитые на части архивы и т.д. Иногда приходится вручную проверять размеры ящиков, чтобы отдать команду на очистку заполненных сверх меры. Сделать это можно простой командой в директории с ящиками:
# du --max-depth=1 | sort -n -r
Команда выведет размеры всех ящиков и отсортирует их по мере увеличения объема, но при этом объем покажет в байтах, что не очень удобно. Можно вывести директории по алфавиту, но с размером в привычных мегабайтах или гигабайтах, но уже без сортировки.
# du -h --max-depth=1
Еще удобнее отправить сразу вывод в текстовый файл с датой в имени файла, чтобы потом было удобно сравнить с тем, что получилось после чистки почтовой базы.
# du -h --max-depth=1 >> "dirsize_`date +"%Y-%m-%d_%H:%M"`.txt"
Тут можно придумать много всяких способов отсортировать данные для более удобного восприятия, или потом автоматически сравнить размеры ящиков. Я не занимался этим.
SPF-запись
Это TXT-запись в DNS зоне домена в которой указываются адреса серверов с которых происходит отпарвка почты у данного домена. Когда почтовый сервер приемника получает письмо с адресом отправителя он идет в DNS и проверяет SPF запись у домена example.com. Пример такой записи:
В данном примере:
- — версия SPF
- — разрешить прием писем с адреса указанного в A записи example.com
- — разрешить прием писем с адреса указанного в MX записи example.com
- — разрешить прием писем из сети 1.1.1.0/24; разрешить прием писем с адреса 2.2.2.2
- — то же самое что ip4, но для IPv6
- — отбросить письмо, пришедшее не от указанных адресов. Можно вместо -all указать ~all, что значит — письмо не отбрасывать, но проверить остальными способами.
Все поля опциональные, не обязательно указывать все. Здесь есть более подробное описание синтаксиса SPF-записи: http://www.openspf.org/SPF_Record_Syntax
Простое удаление старых писем из ящика
Начнем с самого простого примера. Допустим, у вас есть какой-то ящик, хранить письма в котором старше определенного срока не имеет смысла. К примеру, это может быть ящик для оповещений системы мониторинга. После того, как оповещение было прочитано, оно теряет актуальность. Все события и так фиксируются и хранятся на самом сервере, поэтому хранить долго письма нет никакого смысла. Очистим этот ящик, удалив из него все письма, старше 30 дней.
/usr/bin/find /data/mail/virtual/zabbix@mailsrv.ru/Maildir/*/ -type f -mtime +30 -exec rm {} ;
/usr/bin/find | Путь до утилиты find. Проверьте его актуальность в своем дистрибутиве. |
/data/mail/virtual/reports@eme.ru/Maildir/*/ | Путь до конкретного ящика. Конструкция /*/ позволяет сразу проверить обе папки new и cur. |
-type f | Говорим find, что ищем только файлы. |
-mtime +30 | Указываем срок более 30 дней с последнего изменения файла. То есть все файлы старше 30-ти дней. |
-exec rm {} ; | Выполняем удаление. |
В данном случае мы просто используем стандартный синтаксис утилиты для поиска файлов find. Подробности ее использования можно найти в интернете, примеров масса. Во время отладки я рекомендую не использовать удаление, а просто направить вывод в файл, чтобы можно было оценить, что утилита нашла и собирается удалить. В простых примерах, как этот, может показаться, что нет смысла проверять, но в более сложных конструкциях рекомендую всегда это делать, например, вот так.
/usr/bin/find /data/mail/virtual/zabbix@mailsrv.ru/Maildir/*/ -type f -mtime +30 >> /root/dellist.txt
После этого смотрите файл /root/dellist.txt и проверяйте, что собираетесь удалить. После того, как проверили, не обязательно заново выполнять поиск по базе и лишний раз нагружать диски. Можно удалить все указанные в dellist.txt письма следующим скриптом.
#!/bin/bash cat /root/dellist.txt | while read i ; do rm -f "$i" done
Сам процесс поиска по почтовой базе postfix не такой длительный, как поиск и удаление. На сильно нагруженных базах я рекомендую выполнять удаление, когда сервер нагружен меньше всего, а поиск в любое время. Конечно, искать тоже лучше в нерабочее время, но мне не нравится работать ночью, поэтому все, что можно, я делаю днем, а на ночь оставляю по возможности минимум работы.
Postfix полезняшки
Очистка очереди
Просмотр очереди:
postqueue -p
Для удаления из очереди Postfix писем от пользователя alexx можно воспользоватся скриптом:
postqueue -p | grep alexx | awk '{system("postsuper -d "$1)}'
Все письма:
postsuper -r ALL postfix flush
Письмо по ID:
postsuper -r ID
Большой Брат
Доставляет копии ВСЕХ сообщений (входящих и исходящих) на указанный адрес (поддерживается с Postfix v.2.1).
Например, указав в /usr/local/etc/postfix/mail.cf строку:
always_bcc = backup@mydomain.ru
можно сделать полный бэкап всей почты на адрес backup@mydomain.ru
Дублирование писем приходящий на конкретный ящик
Для пересылки скрытых копий (bcc) используя карты recipient_bcc_maps и sender_bcc_maps
Как видно из названия recipient_bcc_maps — для создания копии исходя из информации о получателе письма, sender_bcc_maps — для создания копии исходя из информации о отправителе письма.
Для использования добавляем в main.cf строчки:
sender_bcc_maps = hash:/usr/local/etc/postfix/sender_bcc recipient_bcc_maps = hash:/usr/local/etc/postfix/recipient_bcс
затем создаем файлы:
touch /usr/local/etc/postfix/sender_bcc touch /usr/local/etc/postfix/recipient_bcс
Формат файлов sender_bcc и recipient_bcс это строка (обесательно в конце перевод строки) и два почтовых ящика в одной сроке
через пробел, первый почтовый ящик — тот по которому фильтруется (ящик получателя или отправителя). Пример:
mymail@workmail.ru myhomemail@mydomain.com
Если требуется отправить копию на несколько почтовых ящиков, то алиас на несколько почтовых ящиков, т.к. в одной строке может быть только один ящик который может быть отправлено, а так же каждый почтовый ящик по которому фильтруется в файле должен быть уникален.
После изменений в файлах sender_bcc и recipient_bcс необходимо пересоздать файлы .db:
postmap /usr/local/etc/postfix/sender_bcc postmap /usr/local/etc/postfix/recipient_bcс
И застовляем postfix перечитать конфигурационные файлы:
postfix reload
Смена пароля на postfix.admin
1. в файле /usr/local/www/postfixadmin/config.inc.php меняем строку вида:
$CONF = '168417fb689fbs6bce838012cdee9438:c3c91489f47dc740fe6240f3ea392525cded5426';
на
$CONF = '';
2. и заходим в http://postfix.mydomain.com/setup.php
задаем пароль и вписываем полученую строку в /usr/local/www/postfixadmin/config.inc.php
3. теперь заходим в http://postfix.mydomain.com/setup.php
и заводим административную учетную запись
в первую строку «Setup password» вводим пароль из пункта два.
This entry was posted on Понедельник, 22 августа, 2011 at 16:04 and is filed under Без рубрики. You can follow any responses to this entry through the RSS 2.0 feed.
You can , or trackback from your own site.
Удаление писем на основе содержимого письма
Перейдем к еще более сложному примеру, но в самой простой его модификации. Допустим, вам нужно удалить все письма, адресованные на какой-то адрес. Это может быть актуально в тех случаях, если используется алиас, а с него идет перенаправление на множество ящиков. В итоге, письма, адресованные на этот алиас распространяются по всей почтовой базе в разные ящики. При этом данные письма теряют актуальность со временем, и хранить их нет необходимости.
В данном примере я сделаю еще одно усложнение. Мало того, что мы будем логировать все удаления писем из базы, мы еще будем их сохранять и раскладывать по папкам с названиями ящиков, из которых они были удалены. Дополнительно, удаленные письма будут складываться в директории с именами в виде даты удаления. Таким образом мы полностью застрахуем себя от удаления нужного письма. Даже если это произойдет, то быстро сможем найти это удаленное письмо. Дополнительно будем записывать в лог файл время начала и завершения поиска и удаления. Так как процесс поиска по содержимому достаточно длительный, рекомендую следить за временем его выполнения, чтобы укладываться в окна с малой нагрузкой сервера.
Поясню основные моменты. В строке с поиском писем по всему ящику есть маска:
В данном случае mailsrv это часть имени сервера. В формате maildir в именах файлов писем всегда присутствует имя сервера. Эта маска позволяет найти только файлы почты, отбросив остальные служебные файлы, которые могут там быть. А они там точно будут, например, индексы dovecot, правила sieve и др. Не забудьте поменять эту маску на свою в соответствии с именем сервера.
Строка для поиска получателя письма *for <zabbix@mailsrv.ru>;* именно в таком видевзята из служебных заголовков. Даже если письма различными фильтрами будут перемещаться в другие ящики, первоначальный получатель писем все равно будет зафиксирован этой строкой.Предупреждаю, что не нужно слепо использовать этот и другие скрипты. Они приведены в основном для того, чтобы показать принципы и идеи, которые я использую. Эти скрипты нужно внимательно посмотреть, понять, что происходит в каждой строке, и изменить под свои нужды. В готовом виде вряд ли вам нужен будет именно такой скрипт. Тут все очень индивидуально и требует осознания всех выполняемых действий.
Если вам нужно автоматом удалить в почтовом архиве все спам письма, которые ваша антиспам система помечает как спам, то можете взять служебный заголовок, который ставит эта система и использовать его. Например, Касперский антиспам вот так помечает все спамовые письма:
Соответственно я ищу все письма с таким служебным заголовком и что-то с ними делаю. Например, перемещаю в папку spam или удаляю. Но тут нужно быть внимательным и делать все аккуратно. Например, если какое-то письмо фильтр по ошибке пометил спамом, у пользователя не будет никакой возможности его сохранить, если вы будете автоматически удалять эти письма. Тут нужно думать в конкретной ситуации как поступить. На текущий момент я не использую подобные правила для удаления или перемещения почты, только для поиска, чтобы оценить объем спамовой почты. Если он слишком велик и его чистка позволит высвободить значительные объемы дискового пространства, то я начинаю что-то делать с ящиками пользователей. Чаще всего напрягать админов на местах, чтобы они стимулировали пользователей к самостоятельной ручной очистке спама. Если же спама не много, то я просто ничего не делаю.
Заключение
Для того, чтобы любые работы на prod сервере прошли успешно, я всегда соблюдаю несколько правил:
- Никогда не тороплюсь. Если реально нет необходимости спешить, я всегда довожу до руководства, что спешка не нужна. Она вредит и мешает все сделать хорошо. Пусть лучше я спокойно неделю или две подготовлюсь, все обдумаю, проверю и перенесу без проблем, нежели я буду спешить для соблюдения бессмысленных сроков.
- Тщательно все проверяю и перепроверяю. Делаю все максимально незаметно. Если простой ожидается маленький, не шлю никому никаких уведомлений. Если вы предупредите, что будут работы с почтовым сервером, на следующие дни обязательно кто-то нажалуется, что после переноса все сломалось. Это мешает снимать реальные обратные связи. Когда никто не знает о переносе, отзывы будут только на реальные проблемы, а не надуманные.
- У меня всегда есть запасной план на случай, если что-то пойдет не так. Всегда под рукой актуальные бэкапы и подменные системы. Я точно знаю, что буду делать, если новый сервер не будет введен в эксплуатацию.
Этого достаточно, чтобы успешно проводить любые работы на серверах. Главное, все запланировать заранее, чтобы не было спешки. А как вы планируете масштабные обновления или переносы prod серверов?
Онлайн курс Infrastructure as a code
Если у вас есть желание научиться автоматизировать свою работу, избавить себя и команду от рутины, рекомендую пройти онлайн курс Infrastructure as a code. в OTUS. Обучение длится 4 месяца.
Что даст вам этот курс:
- Познакомитесь с Terraform.
- Изучите систему управления конфигурацией Ansible.
- Познакомитесь с другими системами управления конфигурацией — Chef, Puppet, SaltStack.
- Узнаете, чем отличается изменяемая инфраструктура от неизменяемой, а также научитесь выбирать и управлять ей.
- В заключительном модуле изучите инструменты CI/CD: это GitLab и Jenkins
Смотрите подробнее программу по .
Заключение
Поделился тем, что использовал последнее время в работе с почтовыми серверами. По большому счету — ничего особенного. Почтовые сервера на postfix + dovecot чаще всего не требуют частого присмотра. Работают надежно, не требуют к себе повышенного внимания. Достаточно настроить мониторинг postfix и следить за свободным местом, периодически очищая почтовую базу, которая представляет из себя набор обычных файлов.
Так же рекомендую обязательно бэкапить почтовую базу тем или иным способом (можно простым rsync по директории с ящиками) и настроить мониторинг размера бэкапа, чтобы беглым взглядом можно было оценить динамику изменения размера почтовой базы. При желании, можно настроить триггер, реагирующий на те или иные значения базы.
Заключение
Поделился тем, что использовал последнее время в работе с почтовыми серверами. По большому счету – ничего особенного. Почтовые сервера на postfix + dovecot чаще всего не требуют частого присмотра. Работают надежно, не требуют к себе повышенного внимания. Достаточно настроить мониторинг postfix и следить за свободным местом, периодически очищая почтовую базу, которая представляет из себя набор обычных файлов.
Так же рекомендую обязательно бэкапить почтовую базу тем или иным способом (можно простым rsync по директории с ящиками) и настроить мониторинг размера бэкапа, чтобы беглым взглядом можно было оценить динамику изменения размера почтовой базы. При желании, можно настроить триггер, реагирующий на те или иные значения базы.
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом “Administrator Linux. Professional” в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Что даст вам этот курс:
- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .