Последнее изменение файла: 2007.02.08
Скопировано с www.bog.pp.ru: 2023.02.06
Bog BOS: sendmail из комплекта Solaris
Администрирование почты (sendmail в Solaris
не есть обычный sendmail)
/opt/SUNWaadm/ps/MAILADMIN - документация
В качестве MUA используются:
/usr/bin/mail
/usr/bin/mailx
$OPENWINHOME/bin/mailtool
/usr/dt/bin/dtmail
В качестве MTA используется /usr/lib/sendmail, который
принимает сообщения от MUA
вычисляет адрес назначения
выбирает агента пересылки (deliver agent)
принимает почту от других агентов пересылки
Агенты пересылки:
SMTP - использует 25 порт на
приемной машине
UUCP - использует uux
local - использует /usr/lib/mail.local
(кладет в
/var/mail/имя-пользователя, имя
пользователя д.б.
настоящим, параметры -f senderrecepient,
переписывает все со
стандартного входа в /var/mail/recepient и
добавляет пустую строку, запись в файл
блокируется замком .lock, права
доступа 660,
владельцем является recepient,
группа mail,
вычисляет Content-Length: и
извещает biff-сервер (/usr/sbin/in.comsat))
Mailers: реализация агента в местном sendmail
ether - встроенная в sendmail
реализация SMTP внутри домена
ddn - встроенная в sendmail
реализация SMTP наружу (CR LF в конце строки)
smartuucp -
встроенный в sendmail
посылатель,
использующий uux, но
формирующий заголовки в формате SMTP
uucp - встроенный в sendmail
посылатель,
использующий uux и
стандартные uucp-шные
заголовки (через
восклицательный знак)
local - почему-то указан /bin/mail, а вовсе не /usr/lib/mail.local
prog - указан /bin/sh
error - вернуть сообщение об ошибке
Синонимы:
местонахождение: /etc/mail/aliases
mail host - выделенный компьютер, на котором sendmail
сконфигурирован так, что он умеет маршрутизировать почту,
остальные компьютеры всю не локальную почту посылают на mailhost
(определяется именем mailhost в /etc/inet/hosts).
mail server - компьютер, который ведет /var/mail
директорию для локальный и удаленных пользователей. Также
обрабатывает всю почту, посылаемую клиентами.
mail client - система, которая не имеет локальной директории /var/mail, но
получает почту через mail server.
mail gateway - система, которая обрабатывает почту между
различными подсетями (в т.ч. использующими различные почтовые протоколы).
Утилиты:
/usr/bin/mailq -
посмотреть очередь (в /usr/local/bin
несовместимый mailq!), в
реальности линк на /usr/lib/sendmail -bp
/usr/bin/mailstats -
посмотреть
статистику,
накопленную в /etc/mail/sendmail.st
/usr/bin/newaliases -
преобразовать список
синонимов из
текстового вида в формат БД, в
реальности линк на /usr/lib/sendmail
/usr/bin/aliasadm -
редактирование таблицы
синонимов ═для NIS+ (можно и вручную)
/usr/bin/rmail - линк на /usr/bin/mail
(используется когда надо только послать почту)
/usr/bin/vacation -
управление
автоматическим ответом на время отпуска
/usr/sbin/in.comsat - демон
оповещения
пользователей о приходе почты
Файлы:
/etc/mail/Mail.rc - общие
настройки для mailtool, /usr/ucb/mail и /usr/ucb/Mail
/etc/mail/aliases - список
переназначений почты (aliases.dir и aliases.pag - тот же
список,
преобразованный в формат БД), не забудь после
изменения файла запустить newaliases, формат
файла:
alias: value, value, value
где value м.б. (не более 1000
символов)
/etc/mail/mailx.rc - общие
настройки для /usr/bin/mailx
/etc/mail/sendmail.cf -
конфигурация sendmail (main.cf -
образец для режима главной (host or gateway)
системы, subsidiary.cf - образец для
подчиненной (client or server) машины)
/etc/mail/sendmail.hf - текст хелпа для sendmail
/etc/mail/sendmail.pid
/etc/mail/sendmail.st -
статистика
/var/spool/mqueue - здесь лежит
неотправленная почта
/var/mail - здесь лежат почтовые ящики (у
каждого
пользователя отдельный файл, с правами -rw-rw----
имя-пользователя mail), права к
директории имеют вид: drwxrwxrwt
(по-моему, x здесь лишний, а м.б. и
последний rw) и
принадлежит root:mail
x убрать не
получается:
----- The following addresses had delivery problems -----
?bog@deolws.deol.ru? (unrecoverable error)
----- Transcript of session follows -----
mail: /var/mail/bog
mail: Can't open '/var/tmp/mail013242' type: r+
mail: Cannot create dead.letter
550 ?bog@deolws.deol.ru?... Can't create output: Error 0
/etc/sendmailvars - хранятся
описания макро и классов из sendmail.cf (не нашел
такого)
$HOME/mbox - сюда MUA (mail, mailx)
складывают
прочитанную, но не
удаленную почту
Процесс обработки почты (в пределах одного компьютера):
mailx
отправителя
составляет письмо
sendmail
маршрутизирует
mail.local кладет в ящик
mailx получателя читает письмо
Формат почтовой очереди (/var/spool/mqueue)
файлы имеют имена xfAA99999, где AA99999 -
идентификатор файла, а x - тип файла
d - тело письма
q - управляющий файл очереди. Каждая строка
начинается с буквы:
$ - значения некоторых макро (в
частности, $r и $s)
B- тип тела (7BIT или 8BITMIME)
C- управляющий адрес в формате localuser:aliasname
(насколько я понял
определяет права процесса
отправки)
D - имя файла с телом письма
E - на кого слать сообщение об ошибке
F - флаги (r - ответ на письмо, w -
предупреждение о задержке)
H - строка заголовка (порядок важен, формат как в
файле
конфигурации - это не просто копия
заголовка -
присутствует какая-то
управляющая
информация)
L - информация,
позволяющая вычислить Content-Length (у меня
почему-то 0,0,0)
M -
информационная строка (любой текст,
предполагается, что содержит статус
сообщения)
P - приоритет (чем меньше, тем
приоритетнее), начальный
приоритет зависит от класса и размера письма,
постепенно
увеличивается
R - имя получателя (по одному в каждой
строке, синонимы
обрабатываются при каждом
обращении)
S - отправитель
T - время создания задания
(используется для
вычисления времени удаления из очереди)
t - временный файл типа q в
процессе
преобразования
x - журнал
Обработать почтовую очередь (если это не
делается
автоматически каждый час): /usr/lib/sendmail -v -q
Обработать почтовую очередь только для одного
получателя: /usr/lib/sendmail -qRимя
Как безопасно подменить очередь:
/etc/init.d/sendmail stop
cd /var/spool
mv mqueue mqueue.old; mkdir mqueue
chown daemon.daemon mqueue (в
реальности, однако, root.mail - кому
верить?)
chmod 755 mqueue
/etc/init.d/sendmail start
Как обработать после этого старую
очередь: /usr/lib/sendmail -oQ/var/spool/mqueue.old -q -v
Отладка правил:
/usr/lib/sendmail -bt
в ответ на
приглашение введите: 3,0
адрес-получателя
Файл
конфигурации (/etc/mail/sendmail.cf)
считывается при запуске sendmail и
определяет:
значения
макропеременных
(используются в
дальнейшем)
формат строк заголовка письма
определения мейлеров (агентов
пересылки)
правила
преобразования имен
═(упорядоченный список шаблонов)
параметры (опции)
Наборы правил:
3 - применяется первым,
преобразует к виду: local-address@host-domain
0 - определяет
назначение в виде тройки: mailer, host, user
1 -
переделывает адрес
отправителя
S -
специфический набор для каждого мейлера по
переделыванию адреса
отправителя (для каждого мейлера свое имя, S -
стандартный набор)
2 -
переделывает адрес
получателя
R -
специфический набор для каждого мейлера по
переделыванию адреса
получателя (для каждого мейлера свое имя, R-
стандартный набор)
4 - последний шаг по
переделыванию адресов (из
внутренней формы во внешнюю)