[mdk-re] Анатомия почты в Spring
Alex Savvin
=?iso-8859-1?q?alex_=CE=C1_dag=2Ebryansk=2Eru?=
Вт Сен 25 00:32:11 MSD 2001
On Mon, 24 Sep 2001 22:55:08 +0400
Sergey Kuznetsov <skuznetsov на comail.ru> wrote:
> Отправка почты:
> MUA отдает почту Postfix'у. Тот ждет соединения с провайдером, затем
> по команде sendmail -q отправляет ее адресату или по адресу,
> прописанному в relayhost.
А так же без команды, автоматом в момент поступления письма в очередь.
Но это характерно больше для хостов с постоянным соединением.
>
> Получение почты:
> Fetchmail скачивает почту с почтового сервера по команде fetchmail,
> если есть предварительно созданный файл .fetchmailrc, или fetchmail с
> параметрами, если такого файла нет. Затем почта передается postfix'у,
> который отдает ее MUA по запросу пользователя.
Точнее, почта передается агенту локальной доставки (procmail), который
кладет почту в системный почтовый ящик (/var/spool/mail/<user>). Затем
уже MUA забирает (по команде пользователя) почту из спула и кладет
ее в свою собственную базу (напр, ~/Mail/).
>
> Если вышеописанное представление правильно, то для чего же нужен
> postfix? Зачем нужен еще один посредник?
> Если я все понял неправильно, то как все обстоит на самом деле? (Речь
> идет о построении почтовой системы В ЦЕЛОМ).
Идея примерно следующая:
Вам необходимо отправить почтовое сообщение пользователю (локальному
или удаленному). Не забывайте, что процессы в Unix тоже, в некотором
приближении, рассматриваются как пользователи. Если бы дело ограничивалось
людьми, то настроил пару-тройку MUA, куда ложить почту и все! Но нельзя настроить
массу программ, которые могут выдавать почту для, скажем, root'а и иже с ним.
Т.е. нужен механизм приема "случайных" сообщений, приходящих на стандартный
порт (для smtp - 25). Обмен сообщениями между процессами через порты - стандартная
"фича" Unix (и не только). В случае с удаленным пользователем - более показательный
пример. Он не знает, что вы написали ему письмо (он вообще Вас не знает :), поэтому
запускать fetchmail и смотреть почтовый ящик на Вашем компьютере он не будет
(да и не сможет, пока не узнает свой логин и пароль :). Тут опять помогает postfix
(правильнее MTA). Он узнает IP адрес вашего адресата и обращается к запущенному
у него агенту MTA. Обмениваются приветами, и ваш передает письмо. Тот смотрит,
является ли адрес адресата для него локальным - если да, то передает локальному
агенту для разборки и укладывания в соотв. локальный почт. ящик; если нет - смотрит,
разрешено ли ему релеить это письмо на другой хост, и либо передает, либо дает
вашему MTA "отлуп", дескать relay запрещен.
Короче, таким образом письмо попадает в тот или иной локальный системный
почтовый ящик. А вот тут может понадобится fetchmail. Если вы реальный
пользователь хоста, т.е. имеет доступ к его терминалу - запускайте MUA и читайте
почту, если же вы удаленный пользователь хоста (не случайный, а имеющий логин
и пароль), то вы можете либо читать почту online, либо перебросить ее на свою машину
и читать offline. Переброской занимается fetchmail. Обращается к POP-серверу удаленного
хоста, логинится и смотрит, есть ли для него почта в системном почтовом спуле,
если да - забирает ее и передает локальному агент доставки - тот сам разберется, какое
письмо в какой ящик кинуть, а может вообще в /dev/null (т.е. фильтрация).
Надеюсь, не сильно сумбурно получилось.
--
С уважением,
Александр Саввин
----------------------------------
Email: savvin на mail.ru
ICQ: 103069766
----------------------------------
Powered by Linux Mandrake RE
Подробная информация о списке рассылки community