ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

Архивные статьи в категории ‘MTA’

Добро пожаловать в блог! Надеемся, что Вы еще вернетесь.

Недавно возникла задача сохранять письма уходящие и приходящие на mail сервер.

Было решено, что по входящим письмам буду сохраняться, только те, которые приходят к существующим на mail сервере ящикам, а исходящие будут сохраняться все.

Входящие:

Вариант backup`а через копирование во «второй ящик»:

1. Имеем ящик root@domain.ru и соответственно папку ящика

/var/qmail/popboxes/domain-ru/root/Maildir/

2. создаем backup папку для ящика

/var/qmail/popboxes/domain-ru/root_BAK/Maildir/

3. в файле /var/qmail/popboxes/domain-ru/root/.qmail основного ящика пишем:

|/var/qmail/bin/mailquotacheck
./../root_BAK/Maildir/
./Maildir/

где:

  • первая строка это проверка квоты ящика
  • второй строкой как раз кладем копию письма в backup папку
  • и третья доставка письма в основной ящик

4. в файле .qmail backup ящика можно вообще уже ничего не писать

Итог: получаем точную копию письма в backup папке, которое приходит и доставляется для root@domain.ru

Исходящие:

В Qmail FAQ можно прочитать:

Что такое QUEUE_EXTRA?

QUEUE_EXTRA - статическая переменная, которая определяет дополнительного получателя,
который будет добавлен к каждой доставке. Это используется, прежде всего, для логов.
Например, FAQ описывает, как использовать QUEUE_EXTRA, чтобы сохранить копии всех
приходящих и уходящих сообщений.Дляљ использования QUEUE_EXTRA, отредактируйте файл
extra.h определив дополнительного получателя в формате "Trecipient\0", и длину строки
QUEUE_EXTRA в QUEUE_EXTRALEN ( "\0" считается за один символ).
Например:

#define QUEUE_EXTRA "Tlog\0"
#define QUEUE_EXTRALEN 5

Остановите qmail, если он запущен.

Если вы установили скрипт qmail из раздела <Установка> то можете выполнить:
/usr/local/sbin/qmail stop

Если у вас нет скрипта qmail, Вы должны использовать свой скрипт включения/выключения
или послать процессу qmail-send сигнал TERM
Для компиляции qmail:
make setup check
Заполните ~alias/.qmail-log в зависимости от того, что хотите регистрировать.
Например, для регистрации Message-ID:|
 awk '/^$/ { exit } /^[mM][eE][sS][sS][aA][gG][eE]-/ { print }'

И наконец, перезапустите qmail.

Поясню, т.к. лично я "наступил на грабли":

#define QUEUE_EXTRA «Tlog\0» — локальный (!) ящик log для копии письма
#define QUEUE_EXTRALEN 5 — длина QUEUE_EXTRA:

Т(равно 1 символ) + log (равно 3 символа) + \0 (равно 1 символ) = 5 символов

В файл .qmail (/var/qmail/popboxes/domain-ru/log/.qmail), локального ящика log, помещаем вызов внешнего скрипта с передачей письма ему :

| /root/save_mail.pl

Ну и сам скрипт:

#!/usr/bin/perl
my $in=join(" ",<STDIN>);
open F,">/path/sample.txt";
print F $in;
close F;

Он сохранит письмо в текстовый файл /path/sample.txt. Вы можете дописать скрипт, чтобы он разбирал письмо, копировал письмо в соответствующую подпапку и .т.д. и т.п. Вообщем творим, что хотим.

На /path нужно выставить права owner ящика, смотрим owner`а:

ls -la /var/qmail/popboxes/domain-ru/log
total 8
drwx------  3 popuser  qmail  512 Dec  4 13:01 .
drwxr-xr-x  6 popuser  qmail  512 Dec  4 18:39 ..
-rw-------  1 popuser  qmail   41 Dec  4 13:01 .qmail
drwx------  5 popuser  qmail  512 Jul 11 10:15 Maildir

Выставляем права:

chown -R popuser:qmail /path

Вот и все.

=================

Заметка

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

Допустим что ящик для всей почты домена mydomain.ru будет называться «default». Для этого добавим в файл /usr/symlinks/qmail/users/assign строчку:

+mydomain-ru-:popuser:888:82:/var/qmail/popboxes/mydomain-ru/default:::

Обратите внимание на символ «» в конце.

Затем создадим файл dot-qmail /usr/symlinks/qmail/popboxes/yamaika-ru/default/.qmail-default с адресом почты, куда пересылать письма:
&mailbox@someotherdomain.ru

Теперь вся почта (на любой ящик) домена mydomain.ru будет сначала попадать в ящик default@mydomain.ru, а затем пересылаться на  mailbox@someotherdomain.ru.

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Авторы: Николаев Дмитрий (virus (at) subnets.ru) и Панфилов Алексей (lehis (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 2, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Реализация простого автоответчика, хранящего ответ в MySQL. Всякого рода защиты отсутствуют, возможно добавлю для чистоты.

Если адрес присуствует в таблице autoreply и на этот адрес поступит почта, то отправителю будет отправлено уведомление, текст которого берется из таблицы message.

MySQL:

CREATE TABLE IF NOT EXISTS `autoreply` (
`id` int(100) NOT NULL AUTO_INCREMENT,
`recipient` varchar(50) NOT NULL DEFAULT '',
`message` longtext CHARACTER SET cp1251 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM
;

exim.conf

Transport:

userautoreply:
driver = autoreply
from = ${local_part}@${domain}
reply_to = ${local_part}@${domain}
to = ${sender_address}
subject = AutoReply Re: ${rfc2047:$h_Subject:}
text = ${lookup mysql{SELECT message FROM autoreply WHERE recipient='${local_part}@${domain}'}}

Router:

userautoreply:
driver = accept
condition = ${if eq{} {${lookup mysql{SELECT recipient FROM autoreply \
WHERE recipient='${local_part}@${domain}'}}}{no}{yes}}
senders = " ! ^.*-request@.*:\
! ^owner-.*@.*:\
! ^postmaster@.*:\
! ^listmaster@.*:\
! ^mailer-daemon@.*\
! ^root@.*\
! ^noreply@.*"
no_expn
no_verify
transport = userautoreply
unseen

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: makky
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 3, среднее: 4,33 из 5)
Загрузка...
Отправить на почту Отправить на почту

По-моему мнению, рассылки внутри компании и не только? очень удобная вещь.

Я приведу организацию простейшего случая, но весьма нужного (всем кому давал — очень понравилось =))

Поставьте в acl_check_rcpt:

deny    !authenticated  = *
local_parts     = all

А то спамить удобно будет =)

Router:

virtual_allusers:
driver = redirect
allow_fail
allow_defer
condition = ${if eq {$local_part}{all}{yes}{no}}
data = ${lookup mysql{SELECT CONCAT(login,"@",domain) FROM users}}

секция rewrite:

all@domain $1@domain F

Таким образом, посылая письмецо на all@domain, его получат все. Перебивать заголовки необязательно, но тогда при ответе на такое письмо, ответ получат все, что иногда приводило к появлению неприятных ситуаций.

Enjoy it! ;)

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: makky
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 2, среднее: 4,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Управляем почтовой очередью в MTA Qmail на сервере FreeBSD.

qmqtool

Порт: /usr/ports/mail/qmqtool
Сайт: http://jeremy.kister.net/code/qmqtool

qmqtool — утилита для просмотра очереди qmail и манипулирования сообщениями. По функциональности аналогична qmHandle, но имеет более удобный интерфейс (как для управления так и для просмотра результатов) и использует альтернативный метод для удаления сообщений из очереди (принудительное «устаревание» сообщений), который позволяет безопасно удалять письма без остановки почтовой системы.

qmqtool version 1.13
syntax: qmqtool [-l] [-L] [-R] [-S [-nN]] [-T] [-s] [-Q] [-c] [-r] [-i [-nN]] [-V]
[-E(A|R|L)] [-U(A|R|L)] [-vN [-w]] [-e(N|[-f 'STRING'|-oN])] [-u(N|[-f 'STRING'|-oN])]
[-d(N|[-f 'STRING'|-oN])] [-f 'STRING'] [-oN] [-B(b|r)]

-l              list messages in all parts of the queue
-L              list messages in local queue
-R              list messages in remote queue
-T              list messages in todo queue
-s              show statistical information
-Q              be as quiet as possible (useful for snmp, cron, and such)
-V              be more verbose
-B
b             Backup queue into /var/qmail/queue.backup/
r             Restore backup from /var/qmail/queue.backup/
-c              check queue consitancy
-r              repair queue (by deleting fragments) found by checking queue consistancy
-i              show how many messages are queued per ip
-nN          pay attention to the Nth last smtp-hop
-S              show how many bytes are queued per ip
-e              expire message
may specify N (multiples may be comma separated), or -f 'STRING' and/or -o N
-u              unexpire message
may specify N (multiples may be comma separated), or -f 'STRING' and/or -o N
-d              delete message
may specify N (multiples may be comma separated), or -f 'STRING' and/or -o N
-E              expire messages in [A]ll, [R]emote, or [L]ocal queues
-U              unexpire messages in [A]ll, [R]emote, or [L]ocal queues
-v
N             view first 100 lines of message number N
N -w          view whole message N
-f 'STRING'     display comma separated list of message number(s) containing STRING.
prints 0 if no matches are found.
-o N            display comma separated list of message number(s) older than N hours.
prints 0 if no matches are found.

Примеры

Посмотреть очередь в порядке ‘local’, ‘remote’, and ‘todo’:

qmqtool -s -Q

Посмотреть почтовую очередь по типам:

qmqtool [-l] [-L] [-R] [-T]

  • -l => вся очередь
  • -L => очередь local
  • -R => очередь remote
  • -T => очередь todo

Посмотреть информацию по всей очереди:

qmqtool -l

Показывает первые 100 строчек сообщения с ID 3368277:

qmqtool -v 3368277

Устаревает в очереди письма, в которых содержится такая строка

qmqtool -e -f ‘192.168.1.10’

Пример, когда сервер был заспамлен кем то.

Смотрим на очереди и видим, что у нас большая исходящая очередь:
qmqtool -s -Q

3
18554
199

Просматриваем все очереди и выбираем подозрительное письмо:
qmqtool -l | more

3368277 (3, remote)
Envelope Sender: 04.1.0.656D696C79636F6C7440686F746D61696C2E636F6D@domain.ru
Envelope Recipient: wc52@hotmail.com (To Be Delivered)
Envelope Recipient: wfiler@hotmail.com (To Be Delivered)
Envelope Recipient: poohandhomer@hotmail.com (To Be Delivered)
Envelope Recipient: cabron76@hotmail.com (To Be Delivered)
Envelope Recipient: devo1977@hotmail.com (To Be Delivered)
Envelope Recipient: claus_qvist@hotmail.com (To Be Delivered)
Envelope Recipient: klenakis@hotmail.com (To Be Delivered)
Date: Fri, 10 Oct 2008 05:40:57 +0800
From: "emily at MySpace" <04.1.0.656D696C79636F6C7440686...
To: <wc52>
Subject: emily invites you to MySpace

Смотрим первые 100 строчек подозрительного письма и находим IP-адрес «плохого»:

qmqtool -v 3368277 | more

MESSAGE NUMBER 3368277:

Received: (qmail 25338 invoked from network); 10 Oct 2008 05:39:48 +0300
Received: from 192-168-1-10.domain.com [192.168.1.10]  (HELO domain.ru)
by mail.domain.ru with ESMTP; 10 Oct 2008 05:39:49 +0300
Received: from smtp18.yenddx.com ([87.7.74.130]) by mxs.perenter.com with ESMTP; Fri, 10 Oct 2008 04:49:54 +0400
Received: from mailout.endmonthnow.com [4.27.168.168] by mail.webhostings4u.com with SMTP; Fri, 10 Oct 2008 03:36:22 +0400
Received: from [198.252.208.227] by rly04.hottestmile.com with SMTP; Fri, 10 Oct 2008 02:22:10 +0400
Received: from unknown (HELO m1.gns.snv.thisdomainl.com) (Fri, 10 Oct 2008 02:05:54 +0400)
by mtu67.syds.piswix.net with ASMTP; Fri, 10 Oct 2008 02:05:54 +0400
Message-ID: <E49C5996>
Date: Fri, 10 Oct 2008 00:44:13 +0400
Reply-To: "emily at MySpace" <04>
From: "emily at MySpace" <04>
MIME-Version: 1.0
To: <damoon_tar>
Subject: emily invites you to MySpace
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

emily is a member of MySpace and is inviting you to join.

Выполняем команду на «устаревание» всех писем в очереди, в которых в заголовке содержится строка «192.168.1.10»:

qmqtool -e -f ‘192.168.1.10’

Проверяем очереди ещё раз:

qmqtool -s -Q

3
147
199

Видим, что очередь уменьшилась. Так же можно просто удалить эти письма:

qmqtool -d -f ‘192.168.1.10’

Но удалять письма из очереди нужно только при остановленном qmail.

qmHandle

Порт: /usr/ports/mail/qmhandle
Сайт: http://sourceforge.net/projects/qmhandle/

qmHandle v1.3.2
Copyright 1998-2003 Michele Beltrame

Available parameters:
-a       : try to send queued messages now (qmail must be running)
-l       : list message queues
-L       : list local message queue
-R       : list remote message queue
-s       : show some statistics
-mN      : display message number N
-dN      : delete message number N
-fsender : delete message from sender
-f're'   : delete message from senders matching regular expression re
-Stext   : delete all messages that have/contain text as Subject
-h're'   : delete all messages with headers matching regular expression re (case insensitive)
-b're'   : delete all messages with body matching regular expression re (case insensitive)
-H're'   : delete all messages with headers matching regular expression re (case sensitive)
-B're'   : delete all messages with body matching regular expression re (case sensitive)
-t're'   : flag messages with recipients in regular expression 're' for earlier retry (note: this lengthens the time message can stay in queue)
-D       : delete all messages in the queue (local and remote)
-V       : print program version

Additional (optional) parameters:
-c       : display colored output
-N       : list message numbers only
(to be used either with -l, -L or -R)

Примеры

Просмотр очередей:

qmHandle -l

Просмотр письма ID 2049438:

qmHandle -m2049438

Удалить все письма с subject «Test»:

qmHandle -S»Test»

Удалять письма из очереди нужно только при остановленном qmail.

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Авторы: Николаев Дмитрий (virus (at) subnets.ru) && Debugger
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (Еще не голосовали)
Загрузка...
Отправить на почту Отправить на почту

Формат почтовых ящиков — Maildir

Почтовые ящики доменов находятся в /var/qmail/popboxes/my-domain-ru/

Установка/настройка IMAP:

Идем в /usr/ports/mail/courier-imap/

make (в меню отмечаем AUTH_USERDB)
make install

После установки правим конфиг: /usr/local/etc/courier-imap/imapd
Прописываем ADDRESS=127.0.0.1
В моем случае 127.0.0.1 т.к. веб морда, qmail и IMAP живут на одном сервере.

Правим /usr/local/etc/authlib/authdaemonrc, строчки authmodulelist и authmodulelistorig:
authmodulelist=»authuserdb»
authmodulelistorig=»authuserdb»

Правим /etc/rc.conf и дописываем:
courier_imap_imapd_enable="YES"
courier_authdaemond_enable="YES"

Что бы логировать демон авторизации и imapd можно прописать в начало /etc/syslog.conf:
!authdaemond
*.* /var/log/authdaemond.log
!imapd
*.* /var/log/imapd.log
!-authdaemond,imapd

а в файле /usr/local/etc/authlib/authdaemonrc можно задать необходимый уровень дебага, переменная DEBUG_LOGIN=Х

Теперь необходимо создать файл /usr/local/etc/userdb с помощью которого и будут авторизоваться пользователи.
Формат файла такой:
LOGIN systempw=MD5_PASSWORD|uid=888|gid=82|home=/var
/qmail/popboxes/my-domain-ru/user

Где:
/var/qmail/popboxes/my-domain-ru/user — полный путь до папки почтового ящика
LOGIN — логин пользователя
MD5_PASSWORD — пароль в MD5, поможно сделать с помощью программы userdbpw
uid — юзер ID которому принадлежит папка /var/qmail/popboxes/my-domain-ru/user
gid — груп ID которому принадлежит папка /var/qmail/popboxes/my-domain-ru/user

Смотреть содержимое файла userdb можно с помощью:
userdb -show
а так же управлять им, например:
userdb LOGIN set home=/var/qmail/popboxes/my-domain-ru/user
этой командой он допишет в /usr/local/etc/userdb указанному юзеру указанный параметр. Минимально файл /usr/local/etc/userdb должен содержать параметры указанные выше.

После того как мы создали и отредактировали /usr/local/etc/userdb нужно запустить makeuserdb, который создаст /usr/local/etc/userdb.dat
Если при выполнении команды makeuserdb выдается сообщение:
/usr/local/etc/userdb: MAY NOT HAVE GROUP OR WORLD PERMISSIONS!!

то выставляем права chmod 600 /usr/local/etc/userdb и ещё раз выполняем makeuserdb

Советую полистать для более полного понимания:
man userdb
man userdbpw
man makeuserdb

Исталим веб морду:

Качаем http://www.roundcube.net/ или берем в портах /usr/ports/mail/roundcube
Как инсталить читаем в INSTALL, который появится после сборки командой make
В итоге потребуется создать БД, поправить пару конфигов и ессно настроить ваш веб сервер (например apache)
в файле config/main.inc.php:
правим переменную $rcmail_config[‘default_host’] равную 127.0.0.1
$rcmail_config[‘create_default_folders’] устанавливаем как TRUE
$rcmail_config[‘locale_string’] пишем ru

Стартуем IMAP:

Итак, все подготовлено к запуску, стартуем:
/usr/local/etc/rc.d/courier-imap-imapd start
/usr/local/etc/rc.d/courier-authdaemond start

Правим/создаем файлы для Qmail:

Несколько слов про квоты.
Квота на ящик задается в файле /var/qmail/popboxes/my-domain-ru/user/Maildir/maildirsize в виде <[XXXXS],[YYYYC]>\n, где
XXXX — Объем сообщений в байтах;
YYYY — Количество сообщений в ящике.
Должно быть задан либо объем либо количество либо и то и то.

Необходимо немного следует изменить содержимое /var/qmail/popboxes/my-domain-ru/user/.qmail на:
|/usr/local/bin/deliverquota ./Maildir/
Будьте внимательны, это должно быть написано именно на одной строке.

P.S. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Авторы:
Панфилов Алексей (lehis (at) subnets.ru)
Николаев Дмитрий (virus (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 2, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту