Perl для системного администрирования



              

Отправка почты - часть 5


Общение напрямую по почтовым протоколам

Последний выбор - написать программу, общающуюся с почтовым сервером на его родном языке. Большая часть этого языка документирована в RFC821. Вот как выглядит основной обмен данными по SMTP (Simple Mail Transfer Protocol, простой протокол передачи почты). Данные, которые мы посылаем, выделены жирным шрифтом:

%

telnet example.com 25 -соединяемся с SMTP-портом на

example.com

Trying 192.168.1.10 ... Connected to example.com. Escape character is '"]'.

220 mailhub.example.com ESMTP Sendmail 8.9.1a/8.9.1: Sun, 11 Apr 1999 15:32:16 -0400 (EOT)

HELD client.example.com -идентифицируеммашину,с которой мы.

пришли (можно использовать EHLO)

250 mailhub.example.com Hello dnb@client.example.com [192.168.1.11]. pienSt;' to meet you

MAIL FROM: «jnb@example.com> - определяем отправителя 250 <dnb@exarnple. com>... Sender ok

RCPT TO: <dnb@example.com> - определяем получателя

250 <dnb@example.com>... Recipient ok

DATA - начинаем отправлять данные, не забывая о некоторых ключевых заголовках

354 Enter mail, end with "." on a line by itself From:

David N. Blank-Edelman (David N. Blank-Edelman) To: dnbeexample.com Subject: SMTP - хороший протокол

Просто хочу напомнить себе о том, насколько я люблю SMTP. С миром, dNb

- завершаем сообщение

250 РАА266Р4 Message accepted for delivery QUIT - конец сессии

221 mailhuD.example.com closing connection Cor.rectici closed by foreign host.

Несложно записать в сценарий подобную беседу. Можно было бы использовать модуль Socket или что-нибудь вроде Net: : Telnet, как в главе 6 «Службы каталогов». Но существует несколько хороших модулей для отправки почты, которые упрощают эту задачу. Среди них модуль Женды Крыницки (Jenda Krynicky) Mail; :Se'-oer, Mai 1: :Sendmail Мили-вожа Ивковича (Milivoj Ivkovic) и Mail::Ma:Ier из пакета MailTools Грэхема Бара (Graham Barr). Все эти модули не зависят от операционной системы и будут работать практически везде, где доступен современный дистрибутив Perl. Мы рассмотрим Mail: :Mailer, поскольку он предлагает единый интерфейс к двум способам отправки почты, которые обсуждались до сих пор. Как и в случае с большинством модулей, написанных в объектно-ориентированном стиле, первый шаг заключается в создании экземпляра нового объекта:




Содержание  Назад  Вперед