Опубликован: 21.11.2006 | Доступ: свободный | Студентов: 1666 / 116 | Оценка: 4.09 / 4.00 | Длительность: 38:34:00
Лекция 10:

Программа sendmail

Формат файла справки

Путь: /usr/lib/sendmail.hf

С помощью файла sendmail.hf и команды SMTP HELP на экран выводится справка о командах. Файл справки имеет специфический формат, который анализирует sendmail, когда удаленные хосты обращаются к ней с помощью команды HELP. Как уже отмечалось в "Протокол SMTP" , "Протокол SMTP", клиенты могут выдавать команду HELP либо в общем виде, либо сужать границы ее действия до конкретной команды, на которую требуется справка. Для облегчения работы sendmail с файлом справки в каждой строке файла ставятся специальные метки, обозначающие начало строки. В листинге 10.2 представлен фрагмент файла sendmail.hf.

1 cpyr
2 cpyr Copyright (c) 1998 sendmaili Inc. All rights reserved.
3 cpyr Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
4 cpyr Copyright (c) 1988, 1993
5 cpyr The Regents of the University of California. All rights reserved.
6 cpyr
7 cpyr
8 cpyr By using this file, you agree to the terms and conditions set
9 cpyr forth in the LICENSE file which can be found at the top level of
10 cpyr the sendmail distribution.
11 cpyr
12 cpyr @(#)sendmail.hf 8,18 (BerKeley) 11/19/1998
13 cpyr
14 smtp Topics:
15 smtp HELO EHLO MAIL RCPT DATA
16 smtp RSET NOOP QUIT HELP VRFY
17 smtp EKPN VERB ETRN DSN
18 smtp For more info use "HELP <topic>".
19 smtp To report bugs in the implementation send email to
20 smtp sendmail-bugs@sendmail.org.
21 smtp For local information send email to Postmaster at your site.
22 help HELP [ <topic> ]
23 help The HELP command gives help info.
24 helo HELO <hostname>
25 helo Introduce yourself.
26 ehlo EHLO <hostname>
27 ehlo Introduce yourself, and request extended SMTP mode.
28 ehlo Possible replies include:
29 ehlo SEND Send as mail [RFC821]
30 ehlo SOML Send as mail or terminal [RFC821]
31 ehlo SAML Send as mail and terminal [RFC821]
32 ehlo EXPN Expand the mailing list [RFC821]
33 ehlo HELP Supply helpful information [RFC821]
34 ehlo TURN Turn the operation around [RFC821]
35 ehlo 8BITMIME Use 8-bit data [RFC1652]
36 ehlo SIZE Message size declaration [RFC1870]
37 ehlo VERB verbose [Allman]
33 ehlo ONEX One message transaction only [Allman]
39 ehlo CHUNKING Chunking [RFC1830]
40 ehlo BINARYMIME Binary MIME [RFC1830]
41 ehlo PIPELINING Command Pipelining [RFC1854]
42 ehlo OSN Delivery Status notification [RFC1891]
43 ehlo ETRM Remote Message Queue Starting [RFC1985]
44 ehlo XUSR Initial (user) submission [Allman]
45 mail MAIL FROM: <sender> [ <paranieters> ]
46 mail Specifies the sender. Parameters are ESMTP extensions.
47 mail See "HELP DSN" for dstails
48 rcpt RCPT TO: <recipient> [ <parameters>]
49 rcpt Specifies the recipient.Can be used any number of times.
50 rcpt Parameters are ESMTP extensions. See "HELP DSN" for details.
51 data DATA
52 data Following text is collected as the message.
53 data End with a single dot.
54 rset RSET
55 rset Resets the system.
56 quit QUIT
57 quit Exit sendmail (SMTP).
Листинг 10.2. Фрагмент файла /usr/lib/sendmail.hf

В строках 14–21 листинга 10.2 задаются стандартные справочные сообщения, которые выводятся с помощью команды HELP. После этого каждая отдельная команда выводится слева, а справа выводится справочное сообщение. Например, с помощью команды 'HELP MAIL' клиенту будут выданы строки 45, 46 и 47. Для проверки самостоятельно войдите на TCP-порт 25 и задайте команды SMTP, описанные в "Протокол SMTP" (см. листинг 10.3).

1 [kevin@shadrach kevin]$ telnet localhost 25
2 Trying 127.0.0.1...
3 Connected to localnost.
4 Escape character is '^]'.
5 220 shadracn.smallorg.org ESMTP sendmaill 8.9.3/8.9.3; Tue, 5 Oct 1999 19:39 -0500
6 HELP MAIL
7 214-MAIL FROM: <sender> [ <parameters> ]
8 214- Specifies the sender. Parameters are ESMTP extensions.
9 214- See "HELP DSN" for details.
10 214 End Of HELP info
11 QUIT
12 221 shadrach.smallorg.org closing connection
13 Connection closed by foreign host.
14 [kevin@shadrsch kevin]$
Листинг 10.3. Пример выполнения SMTP команды HELP

Синтаксис команд sendmail

Синтаксис команд программы sendmail часто может вызывать такие же трудности, как и файл конфигурации sendmail. В этом разделе описаны параметры, которые влияют на работу программы sendmail.

Формат команд sendmail:

sendmail [flags] [address ...]

При запуске sendmail по умолчанию без флагов начинает считываться стандартный ввод пока программа не достигнет метки конца файла или строки с одной точкой ( .). Затем делается вывод о том, что sendmail имеет дело с текстовым сообщением и она пытается передать его по адресу, указанному в командной строке. Такой алгоритм работы sendmail полностью повторяет поведение программы mail в ОС Linux. Однако это нестандартный путь применения sendmail. Хотя это лишний раз подтверждает универсальность sendmail. Однако для поддержки работы почтового сервера на базе ОС Linux мы в основном будем рассматривать работу sendmail в фоновом режиме в качестве процесса-демона.

Управление поведением sendmail можно осуществлять с помощью флагов, задаваемых при запуске из командной строки. Флаги sendmail делятся на две группы. К первой группе относятся параметры, которые оказывают влияние непосредственно на действия, выполняемые sendmail. В то же время вторая группа позволяет изменять значения параметров в файле конфигурации. Значения параметров в конфигурационном файле никогда не меняются.

Параметры командной строки sendmail

Итак, поведением программы sendmail можно управлять с помощью параметров командной строки. Функционирование sendmail довольно сильно зависит от параметров, заданных при запуске в командной строке. По умолчанию при запуске программа sendmail считывает свой файл конфигурации и получает из него значения важных параметров. Параметры командной строки могут применяться для изменения этих значений "на лету". Таким образом отпадает необходимость в создании нового файла конфигурации. В этом разделе описаны параметры и их влияние на работу sendmail.

Формат тела сообщения

Параметр: -B

Параметр -B описывает для sendmail формат тела сообщения. Значения этого параметра варьируют между 7BIT и 8BITMIME.

Режим работы sendmail

Параметр: -b

Режим работы sendmail устанавливается параметром -b. В табл. 10.1 представлены возможные значения этого параметра.

Таблица 10.1. Режимы работы sendmail по параметру -b
Режим Описание
a Режим ARPANET
d Запуск в фоновом режиме в качестве процесса-демона
D Запуск в активном режиме
h Отображение базы данных хостов (то же, что и hoststat)
H Очистка базы данных хостов (то же, что и purgestat)
i Инициализация базы данных псевдонимов
m Доставить почту (по умолчанию)
p Отобразить содержимое очереди почтовых сообщений (то же, что и mailq)
s Использовать для ввода-вывода протокол SMTP
t Запустить в тестовом режиме
v Только проверять имена. Сообщения не доставляются

Большинство параметров запускаются только с правами пользователя root. Таким образом, в sendmail осуществляется ограничение доступа для других пользователей. Обычно sendmail запускается в фоновом режиме в виде процесса-демона с параметром -bd. При тестировании нового файла конфигурации применяется параметр -bt. В этом режиме sendmail обрабатывает набор правил и генерирует результаты своей работы без обработки реального почтового трафика на сервере. Это дает возможность любому пользователю запускать sendmail с параметром -bt, не вызывая конфликтов, даже когда в фоновом режиме запущен еще один процесс-демон sendmail.

Игорь Орещенков
Игорь Орещенков
Беларусь, Белорусский государственный университет, 1999