Назад | Оглавление | Вперед |
Глава 15 Серверное программное обеспечение (Почтовый сервис) - Sendmail (часть 1)В этой главеLinux Sendmail сервер Конфигурации Организация защиты Sendmail Утилиты администратора Sendmail Утилиты пользователя Sendmail Linux Imap и Pop сервер Конфигурации Настройка Imap и POP для использования с TCP-Wrappers inetd супер сервером Организация защиты IMAP/POP |
Использование псевдонимов это процесс конвертирования одних локальных имен получателей в другие (использование псевдонимов возможно только для локальных имен). Например используется конвертирование общих имен (таких как root) в реальные имена, или конвертирование одних имен в список из нескольких имен (для списка рассылки). Для каждого элемента где локальный пользователь упоминается как получатель, Sendmail смотрит получателя в базе данных "aliases". Так как Sendmail может производить поиск среди нескольких тысяч имен в файле "aliases", копия файла хранится в независимой базе данных "db" для значительного увеличения скорости просмотра. Если вы настраиваете ваш Sendmail на использование Центрального Сервера (Почтового концентратора) для управления всей почты, вам не нужно будет инсталлировать файлы "aliases" и "aliases.db" на граничных серверах и клиентских машинах.
Шаг 1Создайте файл aliases (touch /etc/mail/aliases) и добавьте в него следующие строки:
#
# @(#)aliases 8.2 (Berkeley) 3/5/94
#
# Псевдонимы в этом файле не будут расширяться в заголоке FROM: почты
# но будут видны через сеть и из /bin/mail.
#
# >>>>>>>>>> Программа "newaliases" должна быть запущена после того
# >> NOTE >> как этот в этот файл будут внесены любые изменения,
# >>>>>>>>>> чтобы они стали видны в sendmail.
#
# Общие системные псевдонимы - должны быть представлены.
MAILER-DAEMON: postmaster
postmaster: root
# Общие перенаправления для псевдо бюджетов.
bin: root
daemon: root
nobody: root
# Лицо получающее почту пользователя root
#root: admin
ЗАМЕЧАНИЕ. Ваш файл псевдонимов будет скорее всего более сложным. Этот пример показывает минимальный вид этого файла.
Шаг 2Создание файла aliases.db:
Так как "/etc/mail/aliases" - это база данных, после создания текстового файла
как описано выше, вы должны использовать команду "makemap" для создания
базы данных схем.
Для создания "базы данных схем псевдонимов", используйте следующую
команду:
domaintable.db, mailertable.db" для Центрального Почтового Концетратора. Все эти файлы связаны с отдельными возможностями Sendmail, которые могут быть настроены системным администратором. Еще раз отметим, что эти возможности нужны только на Центральном Почтовом Концентраторе. Ниже даны краткие описания каждой из них.
Файлы virtusertable и virtusertable.db.virtusertable - это база данных, которая отображает виртуальные домены на известные адреса. Благодаря этой возможности, почта для виртуальных доменов на вашей сети может быть доставлена локальным, удаленным или отдельным пользовательским адресам.
Файлы domaintable и domaintable.db.domaintable - это база данных, которая отображает старые домены на новые. Благодаря этой возможности, несколько доменных имен в вашей сети может быть переписаны из старых доменов в новые.
Файлы mailertable & mailertable.db.mailertable - это база данных, которая отображает имена вида "host.domain" на специальные агенты доставки и новые пары доменных имен. Благодаря этой возможности может быть доставлена через использования специального агента доствки новым локальным или удаленным доменным именам.
Для создания файлов virtusertable, domaintable, mailertable и их соответсвующих ".db" версий в каталоге "/etc/mail" используйте следующие команды:
[root@deep /]# for map in virtusertable domaintable mailertableФайл "/etc/mail/local-host-names" считывается для получения альтернативных имен локального хоста. Одним из способов, как этот файл может быть использован, это объявление списка хостов для которых локальный компьютер выступает как получатель почты через MX записи. На такой машине нам просто нужно добавить имена (например, mail.openna.com), для которых он будет манипулировать почтой. Например:
Создайте файл local-host-names file (touch /etc/mail/local-host-names) и добавьте в него следют строку:
# local-host-names - включает все псевдонимы для вашего компьютера.С такой конфигурацией, вся почта отправляемая на домен "openna.com" или любая почта отправляемая на сервер "www.openna.com" или другой хост будет доставляться на ваш почтовый концентратор "mail.openna.com".
Пожалуйста запомните, что если вы настраивает вашу систему для маскарадинга под другую машину, любая почта посланная из вашей системы на вашу систему будет отправлена на машину под которую вы маскируетесь. Например, в вышеприведенной конфигурации, системные файлы регистрации, которые периодически отправляются на адрес root@www.openna.com, будут отправлены на адрес root@mail.openna.com вашего почтового концентратора.
Файл "/etc/sysconfig/sendmail" используется для определения конфигурационной информации SENDMAIL, такой как, запускать ли sendmail как демон, нужно ли слушать порт для приема почты или нет, и как долго ждать перед отправкой предупреждающего сообщения, если сообщение из каталога очереди не может быть доставлено.
Создайте файл sendmail (touch /etc/sysconfig/sendmail) и добавьте в него следующее:
DAEMON=yesОпция "DAEMON=yes" говорит Sendmail запускаться как демон. Эта строка особо полезна, когда sendmail запускается на клиентских машинах, которые не должны принимать почту из внешнего мира, а должны пересылать все сообщения на центральный почтовый концентратор. Не запуская sendmail, вы также улучшается безопасность. Если вы настаиваете sendmail подобным образом, то замените строку "DAEMON=yes" на "DAEMON=no".
Почта обычно помещается в очередь, потому что не может быть отправлена незамедлительно. "QUEUE=1h" устанавливает интервал времени до отправки предупреждающего сообщения отправителю письма, что его сообщение не может быть доставлено.
Настройка скрипта "/etc/rc.d/init.d/sendmail" для запуска и остановки демона
Sendmail.
Создайте скрипт-файл sendmail (touch /etc/rc.d/init.d/sendmail) и добавьте в него
следующее:
Сейчас, сделаем скрипт исполняемым и изменим права доступа по умолчанию:
[root@deep /]# chmod 700 /etc/rc.d/init.d/sendmail
Создадим символическую ссылку rc.d для Sendmail:
[root@deep /]# chkconfig --add sendmail
Запустим Sendmail сервер вручную, используя следующую команду:
[root@deep /]# /etc/rc.d/init.d/sendmail start
Starting sendmail: [ OK ]
Команды "rm" будет удалять все файлы с исходными кодами, которые мы использовали при компиляции и инсталляции Sendmail. Также будет удален сжатый архив Sendmail из каталога "/var/tmp".
Программа smrsh предназначается для замены "/bin/sh" в программах почтальонах, определенных в Sendmail. Это ограниченная оболочка, которая предоставляет возможность строго определить через каталог "/etc/smrsh", явный список исполняемых программ доступных Sendmail. Чтобы быть более точным, даже если "плохой парень" использует Sendmail для запуска программ без файлов псевдонимов и forward, smrsh ограничит набор программ, которые он или она сможет выполнить. В связке с Sendmail smrsh эффективно ограничивает область выполняемых программ только теми программами, что перечислены в каталоге /etc/smrsh. Если вы следовали по инструкциям описанным выше, то smrsh уже откомпилирована и инсталлирована в каталог "/usr/sbin/smrsh".
Шаг 1Первое, что надо сделать, это определить список команд, которые "smrsh"
позволит Sendmail выполнять.
По умолчанию в него входят:
"/bin/mail" (если инсталлирована на вашей системе)
"/usr/bin/procmail" (если инсталлирована на вашей системе)
ЗАМЕЧАНИЕ. Вы не должны включать интерпретирующие программы, такие как sh(1), csh(1), perl(1), uudecode(1) или потоковый редактор sed(1) в список разрешенных программ.
Шаг 2Следующее, что надо сделать, это заполнить каталог "/etc/smrsh" программами,
которые разрешено запускать Sendmail. Для предотвращения дублирования
программ мы будем создавать символические ссылки.
Для разрешения использования программы "/bin/mail" используйте следующие
команды:
Для разрешения использования программы "/usr/bin/procmail" используйте следующие команды:
[root@deep /]# cd /etc/smrshВышеприведенные команды позволят запускать программы mail и procmail из пользовательских файлов ".forward" или файла "aliases", которые используют "program" синтаксис.
ЗАМЕЧАНИЕ. Procmail требуется только на почтовом концентраторе и не требуется на клиентской машине. Если вы настраиваете вашу систему как Центральный почтовый сервер, то создайте ссылку на procmail как описано выше, иначе пропустите его.
Шаг 3Сейчас мы можем настроить Sendmail на использование защищенного shell. Программа почтальон определяется в одиночной строке конфигурационного файла "/etc/mail/sendmail.cf". Вы должны модифицировать линию "Mprog", заменив в ней "/bin/sh" на "/usr/sbin/smrsh".
Редактируйте файл sendmail.cf (vi /etc/mail/sendmail.cf) и измениет строку: Например:
Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/, T=X-Unix, A=sh -c $uСейчас перезапустите вручную процесс sendmail следующей командой:
[root@deep /]# /etc/rc.d/init.d/sendmail restartЗАМЕЧАНИЕ. В нашем конфигурационном файле "sendmail.mc", написанном выше, мы уже настроили строку "Mprog" на использование защищенного shell "/usr/sbin/smrsh" при помощи макроопределения "FEATURE(`smrsh',`/usr/sbin/smrsh')", так что не удивляйтесь, если "/usr/sbin/smrsh" уже установлен в "/etc/mail/sendmail.cf" для Почтового концентратора. Используйте технику непосредственного редактирования файла "/etc/mail/sendmail.cf" для тех машин, где вы использовали файл с макроопределениями "null.mc" (граничные сервера и клиентские машины).
Файл"/etc/mail/aliases"Несовершенное или небрежное администрирование файла "aliases" может привести к легкому получению привилегированному статусу. Например, многие разработчики поставляют системы с псевдонимом "decode" в файле "/etc/mail/aliases". Его основное назначение - облегчение для пользователей пересылки двоичных файлов по почте. Отправляющий пользователь конвертирует двоичный файл в ASCII, используя "uuencode", затем отправляет полученное сообщение псевдониму "decode" на принимающий сервер. Затем псевдоним через канал (pipe) отправляет сообщение программе "/usr/bin/uuencode", которая конвертирует ASCII назад в двоичный файл. Удалите псевдоним "decode" из файла "/etc/mail/aliases". Аналогично, каждый псевдоним, который запускает программу и который вы сам не создавали должен быть проверен и скорее всего удален.
Редактируйте файл aliases (vi /etc/mail/aliases) и удалите следующие строки:
# Базовые псевдонимы системы - ДОЛЖНЫ быть представлены.Чтобы изменения вступили в силу выполните команду:
[root@deep /]# /usr/bin/newaliasesSendmail сейчас включает значительные антиспаммовские возможности, которые могут помочь предотвратить неправильное использование вашего почтового сервера неавторизированными пользователями. Для этого, редактируйте ваш файл "/etc/mail/sendmail.cf" и внесите в него изменения блокирующие спаммеров.
Редактируйте файл sendmail.cf (vi /etc/mail/sendmail.cf) и измените строку:
O PrivacyOptions=authwarnings
Должна быть:
O PrivacyOptions=authwarnings,goaway
Установка "goaway" говорит Sendmail отвергать все SMTP "EXPN" команды, отбрасывать все SMTP "VERB" команды и игнорировать все SMTP "VRFY" команды. Эти изменения не дадут спаммеру использовать команды "EXPN" и "VRFY".
Ограничение числа людей, которые могут просматреть содержимое очередиОбычно, кто угодно может просмотреть почтовую очередь при помощи команды "mailq". Для ограничения тех, кто имеет возможность ее просмотреть используйте опцию "restrictmailq" в файле "/etc/mail/sendmail.cf". С ней, Sendmail позволяет просматривать очередь только тем пользователям, кто входит в группу владеющую ею (root). Это позволяет полностью защитить каталог очереди, используя режим доступа 0700.
Редактируйте файл sendmail.cf (vi /etc/mail/sendmail.cf) и внесите в него следующее изменение:
O PrivacyOptions=authwarnings,goaway
Измените на:
O*-PrivacyOptions=authwarnings,goaway,restrictmailq
Сейчас измените режим доступа к вашему каталогу очереди:
[root@deep /]# chmod 0700 /var/spool/mqueue
И перезапустите процесс sendmail, чтобы изменения вступили в силу:
[root@deep /]# /etc/rc.d/init.d/sendmail restart
Shutting down sendmail: [ OK ]
Starting sendmail: [ OK ]
ЗАМЕЧАНИЕ. Мы уже добавили опцию "goaway" в строке "PrivacyOptions=", а сейчас добавили туда же опцию "restrictmailq". Любой непривелигированный пользователь, который попытается изучить почтовую очередь получит следующее собщение:
[user@deep /]$ /usr/bin/mailqОбычно, кто угодно может вызвать обработку очереди при помощи ключа "-q". Чтобы только пользователь "root" и владелец каталога очереди могли сделать это используйте опцию "restrictqrun" в файле "/etc/mail/sendmail.cf".
Редактируйте файл sendmail.cf (vi /etc/mail/sendmail.cf) и внесите в него следующее изменение:
O PrivacyOptions=authwarnings,goaway,restrictmailq
Изменить на:
O PrivacyOptions=authwarnings,goaway,restrictmailq,restrictqrun
Перезапустите процесс sendmail, чтобы изменения вступили в силу:
[root@deep /]# /etc/rc.d/init.d/sendmail restart
Shutting down sendmail: [ OK ]
Starting sendmail: [ OK ]
Любой непривилегированный пользователь, попытавшийся запустить обработку очереди, получит следующее сообщение:
[user@deep /]$ /usr/sbin/sendmail -qКогда Sendmail принимает входящие SMTP соединения, он посылает на другой хост приветственное сообщение. Оно идентифицирует локальную машину и говорит о том, что sendmail готов к приему.
Редактируйте файл sendmail.cf (vi /etc/mail/sendmail.cf) и измените строку:
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
Должна быть:
O SmtpGreetingMessage=$j
Перезапустите процесс sendmail, чтобы изменения вступили в силу:
[root@deep /]# /etc/rc.d/init.d/sendmail restart
Shutting down sendmail: [ OK ]
Starting sendmail: [ OK ]
Это изменение фактически ничего не меняет, но рекомендуется в группе новостей news.admin.net-abuse.email как законная предосторожность. Оно изменяет заголовок, которое Sendmail выводит при приеме соединений.
Установка бита "постоянства" на важнейшие файлы SendmailНа важные файлы Sendmail может быть установлен бит "постоянства для лучшей безопасности при помощи команды "chattr". Файл с установленным атрибутом "+i" не может быть модифицирован, удален или переименован, на него нельзя создавать ссылки и никакие данные не могут быть дописаны в такие файлы. Только суперпользователь может снять этот атрибут.
Установите бит "постоянства" на файл "sendmail.cf":
[root@deep /]# chattr +i /etc/mail/sendmail.cf
Установите бит "постоянства" на файл "local-host-names":
[root@deep /]# chattr +i /etc/mail/local-host-names
Установите бит "постоянства" на файл "aliases":
[root@deep /]# chattr +i /etc/mail/aliases
Установите бит "постоянства" на файл "access":
[root@deep /]# chattr +i /etc/mail/access
Для получения большей информации читайте следующие страницы руководства:
$ man aliases (5) - файл псевдонимов для sendmail
$ man makemap (8) - создание базы данных отображений для sendmail
$ man sendmail (8) - почтовый агент электронной почты
$ man mailq (1) - вывод информации о почтовой очереди
$ man newaliases (1) - пересоздание данных базирующихся на почтовом файле псевдонимов
$ man mailstats (8) - вывод статистики работы sendmail
$ man praliases (8) - вывод системных почтовых псевдонимов
Команды описанные ниже мы будем часто использовать, но на самом деле их много больше, и вы должны изучить страницы руководства (man) и документацию, чтобы получить более подробную информацию.
newaliasesНазначение утилиты "newaliases" - это пересоздание и обновление базы
данных произвольного доступа для файла почтовых псевдонимов
"/etc/mail/aliases". Она должна запускаться каждый раз, когда вы изменяете
содержимое этого файла, чтобы изменения вступили в силу.
Обновите файл базы данных псевдонимов с помощью утилиты "newaliases",
используя следующую команду:
Назначение утилиты "makemap" это создание базы данных соответствий для Sendmail. Она должна использоваться только когда вам надо создать новую базу данных для файлов подобных aliases, access, domaintable, mailertable и virtusertable.
Запустите команду makemap, чтобы создать новую базу данных access:
[root@deep /]# makemap hash /etc/mail/access.db < /etc/mail/accessгде <hash> - это формат базы данных, makemap может манипулировать тремя различными форматами баз данных: "hash", "btree" или "dbm". </etc/mail/access.db> - месторасположения и имя новой базы данных, которую мы создаем. </etc/mail/access> - месторасположение файла из которого мы получаем базу. В нашем примере, мы создаем новый файл "access.db", используя команду makemap. Для создания баз данных из других файлов (aliases, domaintable, mailertable и virtusertable) вы должны определить месторасположение и имена соответствующих файлов в команде "makemap".
mailqНазначение утилиты "mailq" - это печать краткой информации о почтовых сообщениях, хранящихся в очереди для дальнейшей доставки Для вывода краткой информации о почтовой очереди используйте команду:
[root@deep /]# mailqКоманды описанные ниже мы будем часто использовать, но на самом деле их много больше, и вы должны изучить страницы руководства (man) и документацию, чтобы получить более подробную информацию.
mailstatsНазначение утилиты "mailstats" - это вывод текущей статистики работы
почтового сервера.
Для получения текущей почтовой статистики используйте следующую команду:
[root@deep /]# mailstats
Statistics from Tue Dec 14 20:31:48 1999
M msgsfr bytes_from msgsto bytes_to msgsrej msgsdis Mailer
5 0 0K 1 3K 0 0 esmtp
8 1259 19618K 1259 19278K 0 0 local
=========================================================================
T 1259 19618K 1260 19281K 0 0
Назначение утилиты "praliases" - вывод текущего почтовых.
Для вывода почтовых псевдонимов используйте команду:
> /etc/rc.d/init.d/sendmail
> /etc/rc.d/rc0.d/K30sendmail
> /etc/rc.d/rc1.d/K30sendmail
> /etc/rc.d/rc2.d/S80sendmail
> /etc/rc.d/rc3.d/S80sendmail
> /etc/rc.d/rc4.d/S80sendmail
> /etc/rc.d/rc5.d/S80sendmail
> /etc/rc.d/rc6.d/K30sendmail
> /etc/sysconfig/sendmail
> /etc/mail
> /etc/mail/statistics
> /etc/mail/sendmail.cf
> /etc/mail/access
> /etc/mail/access.db
> /etc/mail/aliases
> /etc/mail/aliases.db
> /etc/mail/virtusertable
> /etc/mail/virtusertable.db
> /etc/mail/domaintable
> /etc/mail/domaintable.db
> /etc/mail/mailertable
> /etc/mail/mailertable.db
> /etc/mail/local-host-names
> /etc/smrsh
> /usr/bin/newaliases
> /usr/bin/mailq
> /usr/bin/hoststat
> /usr/bin/purgestat
> /usr/lib/sendmail
> /usr/man/man1/mailq.1
> /usr/man/man1/newaliases.1
> /usr/man/man5/aliases.5
> /usr/man/man8/sendmail.8
> /usr/man/man8/mailstats.8
> /usr/man/man8/makemap.8
> /usr/man/man8/praliases.8
> /usr/man/man8/smrsh.8
> /usr/sbin/sendmail
> /usr/sbin/mailstats
> /usr/sbin/makemap
> /usr/sbin/praliases
> /usr/sbin/smrsh
> /var/spool/mqueue
> /etc/rc.d/init.d/sendmail
> /etc/rc.d/rc0.d/K30sendmail
> /etc/rc.d/rc1.d/K30sendmail
> /etc/rc.d/rc2.d/S80sendmail
> /etc/rc.d/rc3.d/S80sendmail
> /etc/rc.d/rc4.d/S80sendmail
> /etc/rc.d/rc5.d/S80sendmail
> /etc/rc.d/rc6.d/K30sendmail
> /etc/sysconfig/sendmail
> /etc/mail
> /etc/mail/statistics
> /etc/mail/sendmail.cf
> /etc/mail/local-host-names
> /etc/smrsh
> /usr/bin/mailq
> /usr/bin/hoststat
> /usr/bin/purgestat
> /usr/lib/sendmail
> /usr/man/man1/mailq.1
> /usr/man/man8/sendmail.8
> /usr/man/man8/mailstats.8
> /usr/man/man8/smrsh.8
> /usr/sbin/sendmail
> /usr/sbin/mailstats
> /usr/sbin/smrsh
> /var/spool/mqueue
Назад | Оглавление | Вперед |