Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 75
Текст из файла (страница 75)
В случае некорректной настройки вы всегда сможете восстановить его.Файл конфигурации по умолчанию, который используется макропроцессором т4 для создания файла конфигурации программы sendmail(sendmail.cf), находится в каталоге / u s r / s h a r e / s e n d m a i l - c f / c f . В болеестарых версиях программы sendmail он может быть расположен в каталоге/usr/lib/sendmail.Как правило, этот файл называется sendmail.me. Иногда он можетназываться и по-другому, например, redhat.mc, если вы используете операционную систему Red Hat или совместимую с ней.319Почтовый серверПример стандартного файла /usr/share/sendmail-cf/cf/redhat.meприведен в листинге 13.1.Листинг 13.1.
Стандартный файл redhat.mcdivert(-1)dnl This is the sendmail macro config file. If you make changes to this file,dnl you need the sendmail-cf rpm installed and then have to generate adnl new /etc/sendmail.cf by running the following command:dnldnlm4 /etc/mail/sendmail.me > /etc/sendmail.cfdnlinclude)'../m4/cf.m4')VERSIONID('linux setup for Red Hat Linux')dnlOSTYPE ( 'linux')define( 'confDEF_USER_ID',"8:12")dnlundefine('UUCP_RELAY')dnlundefine('BITNET_RELAY')dnldefine('confAUTO_REBUILD')dnldefine('confTO_CONNECT' , 4 m ' ) dnldefine('confTRY_NULL_MX_LIST',true)dnldefine('confDONT_PROBE_INTERFACES',true)dnldefine('PROCMAIL_MAILER_PATH', V u s r / b i n / p r o c m a i l ' ) d n ldefine('ALIAS_FILE', Veto/aliases')dnldnl d e f i n e ( 'STATUS_FILE', V e t c / m a i l / s t a t i s t i c s ' ) d n ldefine('UUCP_MAILER_MAX', ' 2 0 0 0 0 0 0 ' ) d n ldefine('confUSERDB_SPEC', V e t c / m a i l / u s e r d b .
d b ' ) d n ldefine('confPRIVACY_FLAGS', 'authwarnings,novrfy,noexpn,restrictqrun')dnldefine('confAUTH_OPTIONS', ' A ' ) d n ldnl TRUST_AUTH_MECH('DIGEST-MD5 CRAM-MD5 LOGIN P L A I N ' ) d n ldnl define('confAUTH_MECHANISMS', 'DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnldnl define ГconfTO_QUEUEWARN', ' 4 h ' ) d n ldnl define('confTO_QUEUERETURN', '5d')dnldnl define('confQUEUE_LA', '12')dnldnl define('confREFUSE_LA', '18')dnldnl FEATURE(delay_checks)dnlFEATURE('no_default_msa', ' d n l ' ) d n lFEATURE('smrsh', Vusr/sbin/smrsh')dnlFEATURE('mailertable', 'hash -o /etc/mail/mailertablu.db')dnlFEATURE('virtusertable', 'hash -o /etc/mail/virtusertable.db')dnlFEATURE(redirect)dnlFEATURE(always_add_domain)dnlFEATURE(use_cw_file)dnlFEATURE(use_ct_file)dnlFEATURE(local_procmail, ", 'procmail -t -Y -a $h -d $u')dnlFEATURE('access_db','hash -o /etc/mail/access.db')dnlFEATURE('blacklist_recipients')dnlEXPOSED_USER('root')dnldnl This changes sendmail to only listen on the loopback device 127.0.0.1dnl and not on any other network devices.
Comment this out if you wantdnl to accept email over the network.320Почтовый серверDAEMON_OPTIONS('Port=smtp,Addr=127.0.0.1, Name=MTA')dnl NOTE: binding both IPv4 and IPv6 daemon to the same port requiresdnla kernel patchdnl DAEMON_OPTIONS(xport=smtp,Addr=::1, Name=MTA-v6, Family=inet6')dnl We strongly recommend to comment this one out if you want to protectdnl yourself from spam. However, the laptop and users on computers that dodnl not have 24x7 DNS do need this.FEATURE(^accept_unresolvable_domains')dnldnl FEATURE('relay_based_on_MX')dnlMAILER(smtp)dnlMAILER(procmail)dnlCwlocalhost.localdomainС помощью директивы FEATURE можно подключить ту или инуюфункцию программы sendmail. Например, функция mailertable предназначенадля переопределения маршрутизации для конкретных доменов.
Вы можетелегко расширить функциональные возможности программы sendmail, добавив нужные вам функции в тс-файл.Предположим, что вы хотите, чтобы названия компьютеров домена былискрыты. Это легко достигается с помощью добавления функцииmasquerade_envelope в ваш mc-файл. Для этого скопируйте файл redhat.mc вфайл hide_hosts .me и добавьте в конец файла hide_hosts .me строки:MASQUERADE_AS(my-domain.ru)dnlFEATURE(masquerade_envelope)dnlЗатем выполните команду:m4 / u s r / s h a r e / s e n d m a i l - c f / c f / h i d e _ h o s t s . m e > / e t c / s e n d m a i l .
m eВот и все! Названия узлов будут скрыты. Описание прочих функцийпредставлено в табл. 13.1.Функции программы sendmailФункцияaccess_dbТаблица 13.1ОписаниеОпределяет таблицу доступа. В этой таблице указаны хосты, которым разрешена или запрещена отправка почты через ваш почтовый сервер. Эта опцияэффективно используется для борьбы со спамом. Защита от спама подробнорассмотрена в одноименном разделе в гл. 23accept_unresolvable_domains Разрешает отправлять почту доменам, которые не могут быть распознаныbestmxjsjocalСообщения будут приниматься только в том случае, если запись МХ-сервераDNS указывает на этот почтовый серверblacklist_recipients«Черный список». Еще одна опция для борьбы со спамом.
Для ее работынеобходима опция access_dbdnsbiИспользуется для работы с «черным списком», dnsbl — это сокращение от DNSBlack List. В более ранних версиях эта опция называлась rbl (Resolve Black List)domaintablegenericstableИспользуется для разрешения имен доменовИспользуется для изменения адреса отправки в сообщенияхlocal_procmailУказывает, что доставлять почту нужно с помощью локальной утилиты procmailmailertableПереопределяет маршрутизацию для конкретных доменовmasquerade_entire_domainИспользуется для маскировки (сокрытия) всего домена. Данная функциядолжна использоваться вместе с директивой MASQUERADE AS(или MASQUERADE_DOMAIN), например,MASQUERADE_AS(f1 17.ru)dnl113<ut.
851321Почтовый серверПродолжение табл.Функцияmasquerade_enveloperedirectrelay_based_on_MXrelay_hosts_onlyrelay_mail_fromsmrshuse_cf_fileuse_cw_filevirtusertable13.1ОписаниеПозволяет скрыть имена хостов домена. Заменяет поле received fromзаголовка сообщения перед передачей сообщения другим МТАИспользуется для перенаправления на другой почтовый сервер. Означаетотказ от принятия почты с выдачей сообщения please try <address>(попытайтесь использовать этот адрес)Разрешает перенаправление (ретрансляцию) почты только для узлов,которые указаны в записях МХ-сервера DNSРазрешает ретрансляцию только для узлов, указанных в access_dbРазрешает ретрансляцию только, если отправитель указан в списке RELAYбазы access dbИспользование ограниченной оболочки sendmailПри указании этой функции sendmail будет обращаться к файлу sendmail.
cf засписком доверенных пользователейПри указании этой функции sendmail будет обращаться к файлу sendmail. cwза списком локальных узловПреобразует адрес получателя в адрес локального пользователяВ файле /etc/mail/sendmail. cw перечислены все псевдонимы данногопочтового сервера. Предположим, что имя вашего сервера mail.dhsilabs.ru.Если отправитель отправит почту по адресу den@mail.dhsilabs.ru, письмо будетбез проблем доставлено пользователю den. А если кто-то отправит письмо поадресу den@dhsilabs.ru, то его доставка вызовет определенные трудности, таккак не ясно какому узлу домена dhsilabs адресовано сообщение? Для решенияэтой проблемы в файл sendmail.cw нужно поместить строку:dhsilabs.ruТеперь, когда будет приходить почта формата user@dhsilabs.ru, онабудет доставлена почтовому серверу mail.dhsilabs.ru.Напомню, что перед изменением файла sendmail.cf желательно остановить программу sendmail.
Это делается с помощью команды:/etc/init.d/sendmail stopЗапустить sendmail заново можно с помощью команды:/etc/init.d/sendmail startКонечно, удобнее сначала отредактировать файл sendmail. cf с помощью т4, а потом выполнить команду /etc/init.d/sendmail restart для перезапуска программы sendmail.13.2. Аутентификация в sendmailПрограммы Sendmail 8.10/8.11 поддерживают SMTP AUTH, согласностандарту RFC 2554. Аутентификация базируется на SASL. Она позволитвам несколько повысить безопасность вашей сети, но создаст определенныенеудобства для пользователей, потому что не все почтовые клиенты ееподдерживают.Вам потребуются библиотеки Cyrus SASL, исходные коды которых выможете найти по адресу ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/.
Последнейверсией на момент написания этих строк являлась 1.5.14. Желательно также322Почтовый сервервыкачать последнюю версию sendmail, хорошо бы в исходных кодах. Скачатьпоследнюю версию программы sendmail можно по адресу: http://www.sendmail.org. Распакуйте библиотеку Cyrus SASL выполнив следующуюпоследовательность:t tar -xzf cyrus-sasl-1.5.24.tar.qztt cd cyrus-sasl-1.5.24/t ./configure —prefix=/usr# makeI make i n s t a l lРаспаковывать лучше всего, зарегистрировавшись в системе root. Самапо себе операция извлечения файлов из архива не требует таких полномочий, однако, если у вас не было прав суперпользователя, вам нужно будетизменить права доступа для файлов, которые будут распакованы в каталоги/ u s r / l i b и / u s r / i n c l u d e . Распаковав исходные коды, отредактируйтефайл / u s r / l i b / s a s l / S e n d m a i l .
c o n f . Если он не существует, создайте его.В конец этого файла необходимо добавить строку:pwcheck_method: sasldbЭто укажет sendmail, что аутентификацию нужно проводить с использованием SASL. Теперь займитесь созданием базы данных всех пользователей,которые могут отправлять почту. Для этого используются две программы:saslpasswd и sasldblistusers. Они должны находиться в каталоге /sbin.
Запускать их нужно от имени пользователя root.# saslpasswd -a sendmail newuserpassword:<type passwdord for newuser>Эту процедуру требуется провести для всех пользователей, которымразрешено отправление почты. Затем используйте вторую программу:sasldblistusersОна применяется для просмотра всех записей в базе данных. После еезапуска вы должны увидеть что-то наподобие этого:u s e r : newuser realm: d h s i l a b s . c o m mech: CRAM-MD5user: newuser realm: dhsilabs.com mech: DIGEST-MD5user: newuser realm: dhsilabs.com mech: PLAINОтображенная информация означает, что пользователь newuser можетаутентифицироваться тремя методами: CRAM-MD5, DIGEST-MD5, PLAIN.Рекомендую использовать метод CRAM-MD5, но в крайнем случае подойдети PLAIN.Далее проверьте, поддерживает ли ваш sendmail библиотеку SASL:sendmail -dO.1 -bv root I grep SASLПри отсутствии поддержки SASL от вас потребуется перекомпилироватьsendmail.
Вот для чего я просил в начале раздела приготовить исходные кодыsendmail. Итак, распакуйте sendmail, как обычно, программой tar:tar -xzf senmail-x.xx.xx.tar.gzcd sendmail-x.xx.xx/323Почтовый серверТеперь нужно создать файл s e n d m a i l - x . x x . x / d e v t o o l s / S i t e/ s i t e . c o n f i g . m 4 , в котором необходимо прописать следующие строки:A P P E N D D E F ( ' c o n f E N V D E F ' , '-DSASL')APPENDDEF('conf_sendmail_LIBS', '-Isasl')APPENDDEF('confLIBDIRS', ' - L / u s r / l i b / ' )APPENDDEF( x confINCDIRS', ' - I / u s r / i n c l u d e / ' )Напомню, создать файл в простейшем случае можно командой:cat > sendmail-x.xx.x/devtools/Site/site.config.m4Самое время запустить скрипт Build:./Build. / B u i l d installЕсли вы все сделали правильно, ваш sendmail теперь должен поддерживатьSMTP AUTH.