: Чудес не бывает. Задача: переслать письмо от одного локального
: юзера другому, и при этом обработать его под uid-ом получателя
: (procmail'ом, например). Асинхронно. Как выглядит решение в qmail?
: Интересуют uid'ы участников этой операции на всех этапах.
Письмо, к AT, кажется, потерялось :-(( перемудрил я с Postpone в tin),
так что заход два:
В qmail решение выглядит так. При старте (то есть при init 3, init 5 в
Linux'е) пускается некий qmail-start, который, в свою очередь,
пускает четыре процесса:
qmail-clean (UID = qmailq) - вычищает queue по мере необходимости.
qmail-send (UID = qmails) - (командир роты :-)) командует процессом раздачи
_всех_ сообщений путем пинания _работающих_ qmail-rspawn и qmail-lspawn
qmail-rspawn (UID = qmailr) - (командир взвода :-)) этому приходится
работать больше :-), он запускает в нужные моменты
qmail-remote, который и занимается тем, что разговаривает с remote клиентами.
qmail-lspawn (UID = root) - (внимание! все напряглись :-)) выполняет функцию
qmail-rspawn для local deliverings, то есть сам ничего не доставляет
а пускает,
qmail-local (UID = destin.userID), который собссно и занимается доставкой
сообщений. Hесет в себе элементы procmail (может положить почту
в место, отличное от default, вызвать программу обработки, переслать
еще куда-нить). Впрочем, и procmail, говорят, прикручивается по мере
необходимости.
Hормальное место для User'ской почты в qmail - $HOME/Mailbox (MBOX)
(Или круче, $HOME/Maildir/, так как MBOX (равно как и MH-folder) формат,
по мнению Dan.J.Bernstein'а - "not reliable" (Это вообще его, кажется,
первая фраза, которой его научила мама :-). Вторая была "RTFM!" :-))).
Кроме этого пускается (через inetd [и tcpd], или их аналоги,
tcpserver [и tcpcontrol])
qmail-smtpd (UID=qmaild) - разговаривает по smtp и скармливает полученное
qmail-queue (SUID = qmailq). Есть еще
splogger, который читает входящие ему во входной поток строки и помещает их
(через syslog) в syslog (Hормальная строчка запуска qmail-start и
qmail-smtpd оканчивается на 2>&1 | splogger .....)
Так вот и живем. Hесмотря на сложную и причудливую схему все работает в
меру быстро (утверждается, что быстрее sendmail'а) и надежно. Была
плюха, связанная с тем, что qmail не ограничивал длину адреса сообщения
и количество одновременно запущенных qmail-smtpd. Ему то самому ничего :-),
но вот swap исчерпывался :-), и система начинала вести себя недостойно
(Публика уже наслышана, как ведет себя Linux в подобных случаях :-)).
Первое ограничивается путем выставления ulimits в shell или небольшого
патча. Второе - нормальный tcpwrapper.
Желающие могут потренироваться в ломании. Приз $1000 (one thousand bucks).
Если вы, к тому же, предоставите system sources, то получите $500 лично от
DJB. Соревнование начато в апреле 1997 и закончится в апреле 1998.
Подробности на www.qmail.org. Дерзайте!
Фу, наконец-то! :-) Проще было qmail's mans запулить. Извините, если долго,
сами просили в деталях :-)
С уважением, А. Морозов.
P.S. Кому нужны ЕЩЕ большие детали (8-0) - на [ftp,www].qmail.org за сорцами
qmail. Процесс установки допускает наличие _работающего_ sendmail'а, и
предлагаются варианты "мягкого" апгрейда.
--- ifmail v.2.10dev
* Origin: Unknown (2:5020/400@fidonet)
_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _
From : Solar Designer 2:5020/400 Thu 01 Oct 98 04:47
Subj : Re: ipop3d from IMAP (чем Maildir не угодил?)
________________________________________________________________________________
From: Solar Designer <solar@cannabis.dataforce.net>
Roman Bondarev (POMAH) <pomah@kemsu.ru> wrote:
>> Кстати, я тут как раз подумываю не написать ли нормальный pop3 демон,
>> который будет:
>> 1. Иметь структуру в стиле qmail'а, но работать с /var/spool/mail.
> А чем Maildir не угодил? По мне, так это более удобная вещь, просто
> новая и от этого не популярная. Другое дело, что в каталоге юзера ему не
Двумя вещами не угодил:
1. И правда еще(?) не популярная. Если надо иметь возможность читать мыло
и по pop3 и из шелла, да еще и разными читалками (юзеров много, каждому
нравится свое), то заставлять их все понимать Maildir'ы не так уж быстро.
2. Поддерживается только самим qmail'ом, тогда как я хочу pop3 демон,
который был бы drop-in replacement при любом MTA. Даже более конкретно:
надо, чтобы он работал с VMailer'ом, когда тот выйдет.
(3. А не многовато ли жрет inode'ов на машине с десятком тысяч юзеров?)
(4. Лицензией qmail'а. Hапример, binary distributions разрешили только
недавно, да и то, думаю, out-of-the-box мы qmail мало где увидим.)
>> Советы принимаются. В частности, на тему: локинг и возможность
>>обойтись без копирования mailbox'а в наиболее типичных случаях (т.е.
>>при забирании сообщений подряд).
> вот тут то и есть преимущество Maildir - просто переместить из /new в
> /cur, а то и вовсе удалить.
Именно. Hо, тем не менее, пока многие на Maildir'ы не переходят, по
разным причинам. И остается куча дырявых и глючных pop3 демонов.
_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _
From : Sergey Gudilin 2:5030/587.11 03 Jul 99 23:35:56
Subj : qmail, отпинать письма с определенных адресов
________________________________________________________________________________
Hallo Peter!
Am 25 Jun 99 schrieb Peter V. Chernikoff an All
zum Thema "- qmail -":
PVC> 1. Заставить делать bounce для писем с определенных хостов/от
PVC> неких юзеров.
Я тоже не сразу допер, если я тебя правильно понял, ты хочешь отпинать письма с
определенных адресов? Тогда либо man qmail-smtpd на предмет CONTROL FILES, либо
создаешь в директории /var/qmail/control файл badmailfrom куда записываешь все
адреса, от которых ты не хотел бы получать почту, можно даже целые хосты туда
забить в виде @host.domain
Если ты к примеру не хочешь, чтобы с определенных доменов вообще к тебе
коннектились на smtp порт, то делай это через tcp-env и файлы /etc/hosts-allow и
/etc/hosts-deny используя tcp-env.
Tschoe,
Sergey
--- FEddy 1.4.02 via ifcico
* Origin: (2:5030/587.11)
>>>>> "PVC" == Peter V Chernikoff
<Peter_V_Chernikoff@p332.f1354.n5020.z2.fidonet.org> writes:
a> .qmail адрес отправителя и если надо, возвращать errorlevel 99. Ему же
a> там тонна информации о письме передается, в соответствии с man
a> qmail-command.
PVC> Вот я и просил - конструкцию покажи :). man bouncesaying меня, к
PVC> сожалению, не просветляет :(.
~/.qmail
=== Cut ===
| bouncesaying "Sorry, you are in my badmail list" check-badmail.sh
=== Cut ===
~/check-badmail.sh
=== Cut ===
#!/bin/sh
#
# Hайти адрес отправителя в килл-файле и если нашли, то выйти с нулем,
# чтобы bouncesaying отбаунсил.
#
grep -q $SENDER ~/mybadmailfrom && exit 0
exit 1
=== Cut ===
Hу, то есть check-badmail, понятно, можно так, что мало не покажется.
Гыгы, вообще я перестал понимать, что именно мы обсуждаем. procmail
настрой :)
--
Пусть тени обходят тебя стороной // солнце нас не отпустит