Массовая очистка корзин в почтовой базе postfix. Копирование исходящей почты


Появилось задание от руководства - надо бэкапить всю почту с возможностью последующего просмотра,
если вдруг возникла нехорошая ситуация с сотрудником.
Сказано - сделано.

Итак...так как я использую в качестве почтового сервера postfix+cyrus-imap, я воспользовался внутренними возможностями обоих систем, а именно:
1. postfix умеет всю проходящую почту копировать через себя на какой-нить ящик
2. в cyrus-imap имеется реализация sieve

Задачу я себе поставил следующую:
1. Письмо, проходящее через сервак копируется в ящик [email protected]
2. sieve-скрипт обрабатывает письмо и кладет его в соответствующую папку ящика [email protected]

Действия:
1. Добавляем строку (параметр) в /etc/postfix/main.cf
always_bcc = [email protected]

2. Так как я использую еще и amavisd-new, то нужно добавить одну строчку
в \etc\postfix\master.cf, чтобы не было дубликатов писем
-o receive_override_options=no_address_mapp ings

3. Так копирование сделано, теперь займемся конкретно ящиком backup (предварительно в системе создайте пользователя backup бесправного и без bash)
# cyradm -u cyrus localhost --auth PLAIN-TLS
IMAP Password:
mskgw.masterlock.ru> cm user.backup #создаем сам ящик

# создаем подпапки для тестового ящика
mskgw.masterlock.ru> cm user.backup.test.inbox
mskgw.masterlock.ru> cm user.backup.test.sent
Здесь, я думаю, понятно, inbox - для входящих, sent - для исходящих.

4. В ящике все подготовлено для работы, теперь нужно создать скрипт sieve для того, чтобы письма аккуратно раскладывались по папкам.
В папке /var/lib/imap/sieve создаем скрипт backup.script
# vi /var/lib/imap/sieve/backup.script

require ["fileinto","subaddress"];

if address:user ["to", "cc", "bcc"] "test" {
fileinto "user.backup.test.inbox";
}
if address:user "from" "test" {
fileinto "user.backup.test.sent";
}
данный скрипт проверяет, к нам письмо пришло или от нас уходит, и соответственно,
кладет его в определенную папку.

5. Теперь нужно этот скрипт применить к системе. Подключаемся к sieve - подключаться нужно тем
пользователем-ящиком в котором должен работать скрипт.
!!!ОСТОРОЖНО - на всякий пожарный отключите службу postfix, иначе может возникнуть проблема с базами cyrus-imap - delivery и tls_sessions

#sieveshell -u backup -a backup localhost

>put /var/lib/imap/sieve/backup.script backup.script #импортируем скрипт под именем backup
>activate backup #активируем скрипт - без активации скрипт работать не будет
>quit
Если ошибок не возникло, можно тестить.

6. Тест
Подключитесь к почтовому ящику [email protected]
а) В почтовом ящике [email protected] создаете письмо, отправляете - письмо должно появиться
в папке test.sent ящика backup
б) Из какого-либо ящика отправляем письмо на ящик [email protected] - письмо должно появиться
в папке test.inbox ящика backup

Если все ок - значит молодцы.

Минусы:
- для каждого пользователя нужно ручками создавать подпапки
- для каждого пользователя нужно перегенерировать скрипт, т.е. редактировать файл, а потом через sieveshell заново загружать его (если загружать его под тем же именем, то тогда активация скрипта не требуется)
- нужно следить за свободным местом на серваке, а то ведь может и закончиться... :)
Удачи!

Дата:2010-06-08

Дано:
1) Почтовый шлюз на postfix для внутренней почты, зашиты от спама и др.
2) Внутренняя почта на каком-либо почтовом сервере, с локальными пользователями.

Задача:
Имеется сотрудник с внутренним почтовым ящиком и внешним. Необходимо пересылать|копировать все письма приходящие из внешней среды на локальный почтовый ящик и на внешний.
Решение:
Открываем конфигурационный файл Postfix.
vi /etc/postfix/main.cf
Добавляем строчку
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
Создаем файл
vi /etc/postfix/recipient_bcc
Добавляем:

Говорит о том, что для данного пользователя пересылать всю почту на \n [email protected] Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script , при этом на локальную почту сообщения по прежнему будут доставляться.
В результате получим:
Письма приходят на внутренний почтовый адрес \n [email protected] Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script и на внешний \n [email protected] Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
Далее выполним:
postmam /etc/postfix/recipient_bcc


Дополнительно:
Для копирования приходяшей почты на local.loc в почтовый ящик \n [email protected] Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
В vi /etc/postfix/recipient_bcc записываем
@local.loc \n [email protected] Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
Для копирования всего домена в \n [email protected] Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
в /etc/postfix/main.cf дописываем

always_bcc= \n [email protected] Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script

Копирование исходящей почты

В /etc/postfix/main.cf добавляем:
sender_bcc_maps = hash:/etc/postfix/sender_bcc
Создаем файл:
vi /etc/postfix/sender_bcc
\n [email protected] Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script \n [email protected] Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script

Далее выполним:
postmam /etc/postfix/sender_bcc

Дмитрий Владимирович, 9 сентября 2014 в 11:17

Постановка задачи: имеем настроенный почтовый сервер на основе Postfix с пользователями в MySQL и Dovecot как MDA , необходимо настроить наш почтовый сервер как резервный Backup MX для отдельно взятых клиентов. Ситуацию усложняет необходимость иметь несколько действующих ящиков на нашем почтовом сервере, вне зависимости от того, есть они или нету на основном почтовом сервере. В чем эта сложность и для чего это нужно — мы сейчас и рассмотрим…

Долгое и обстоятельное введение в суть дела

Зачем же это было нужно? В принципе, достаточно задействовать опицию PostfixAdmin бэк-энда «Mail server is backup MX» и вся почта будет как часики релеиться для выбранного домена, так как домен будет перечислен в опции relay_domains в опциях Postfix.

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

Однако жизнь была бы скучна, если бы не появлялись задачки, требующие особого решения. Например, в некоторых случаях клиенту необходимо, чтобы именно наш почтовый сервер отсылал письма с рассылкой от имени основного домена клиента (например, от имени [email protected]), для которого наш почтовый сервер ни резервным ни основным почтовым сервером не является. По (не)понятным причинам, клиент такой ящик у себя создавать не пожелал.

В таких случаях возможны следующие проблемы:

  • почта, рассылаемая нашим сервером, не будет доставлена на локальные адреса домена заказчика (наш сервер будет в «святой уверенности», что он единолично обслуживает домен client.com, и при отсылке на адреса вида [email protected] вы получите ошибку 500 "Recipient address rejected: User unknown in virtual mailbox table");
  • почта клиента будет часто попадать в папку спам, так как наш сервер не авторизован выполнять рассылку от имени домена клиента client.com (сервер не указан как MX запись у клиента в DNS; сервер отсутствует в перечислении авторизованных почтовых серверов в записи SPF домена client.com);

Чтобы исключить эти проблемы нужно выполнить следующие настройки.

1. Авторизовать почтовый сервер в SPF клиента

Достаточно добавить наш почтовый сервер по IP (например, 99.111.222.88/32) и/или по его доменному имени (ourmail.server.com) в SPF запись домена клиента, как показано ниже:

V=spf1 ip4:99.111.222.88/32 … a mx … include:ourmail.server.com … ~all

2. Назначить почтовый сервер как Backup MX для клиентского домена client.com

Учтите, что нагрузка на наш почтовый сервер может многократно возрасти, так как резервный почтовый сервер вынужден обслуживать весь домен клиента, если первичный почтовый сервер заказчика по каким-то причинам не доступен. Также, к нам могут попадать запросы, отклонённые основным почтовым сервером и конечно же спам. Куда уж без него.

Чтобы указать наш сервер как резервный для домена client.com, необходимо в записях DNS домена client.com указать запись MX с весом, который выше (больше) чем вес основного почтового сервера клиента:

Client.com. MX 10 mail.client.com ; почтовый сервер клиента client.com. MX 50 ourmail.server.com ; наш, резервный, почтовый сервер

3. Отметить домен клиента в PostfixAdmin как резервный

Рисунок 1 — настройка backup MX домена в postfixadmin

В настройках домена, отмечаем чекбокс «Mail server is backup MX». С этого момента наш сервер будет принимать и пересылать (релеить) всю почту домена client.com.

4. Настроить транспорт для пересылки почты на основной сервер клиента с исключениями

Как уже упоминалось выше, наш почтовый сервер сам по себе также обслуживает домен client.com и имеет несколько локально созданных ящиков, что приводит к проблемам работы траспорта и почта, инициатором которой является непосредственно наш почтовый сервер (например, отправленная с ящика [email protected]) и предназначенная для домена client.com (например, для [email protected]) не будет отправляться. Дабы этого избежать, нужно настроить транспорт postfix следующим образом…

Создать файл /etc/postfix/transport и внести в него необходимые правила для прохождения почты для доменов, для которых наш почтовый сервер является резервным. В частности, для тех ящиков, что непосредственно созданы на нашем почтовом сервер — указать наш виртуальный транспорт virtual: , для всех остальных — указать основной почтовый сервер клиента в прямоугольных скобках или его домен, но уже без скобок:

Root@mailserver:/# vim /etc/postfix/transport [email protected] virtual: [email protected] virtual: [email protected] virtual: [email protected] virtual: client.com smtp: example.com smtp:example.com

Примечание: обратите внимание на прямоугольные скобки — это запрет для почтового сервера искать MX запись для этого домена, или другими словами — явное указание почтового сервера, которому мы хотим отдавать почту. Подробнее информацию, конечно, можно найти в официальной документации — man 5 transport

Осталось указанный файл отхэшировать и «скормить» postfix-у:

Root@mailserver:/# postmap /etc/postfix/transport root@mailserver:/# vim /etc/postfix/main.cf … transport_maps = hash:/etc/postfix/transport …

После внесений изменений нужно перезапустить postfix.

Root@mailserver:/# service postfix reload

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

Комментарии

Комментарии отключены, сожалеем

Новое на сайте

настройка почтового сервера как резервного (backup MX) или пересылка почты для домена клиента

Нобходимо настроить наш сервер как резервный Backup MX для отдельных клиентов. Ситуацию усложняет необходимость иметь несколько активных ящиков на нашем сервере, вне зависимости есть они или нету на основном почтовом сервере. Зачем же это было нужно?