Linux-сервер своими руками — страница 62 из 119

2001 10:54:22 +300

Это означает, что sendmail работает, осталось проверить насколько правильно он это делает. С этой целью введите примерно следующее:

mail from: [email protected] 

220 2.1.0 [email protected] …. Sender Ok 

rcpt to: [email protected] 

220 2.1.5 [email protected] …. Recipient Ok

После этого введите команду data, потом текст сообщения, а для окончания ввода поставьте точку в пустой строке. Sendmail сообщит, что сообщение отправлено (точнее помещено в очередь на отправку). Запись [email protected] — имя пользователя, которому вы отправляете почту. Пользователь должен реально существовать. Запись den.dhsilabs.com — имя вашего почтовика.

Примечание. Имена [email protected] и dhsilabs.com даны в качестве примера. Вместо них вы должны указать свои значения.

Обратите внимание, что узла my.host.com и в природе нет, а программа sendmail сообщает, что «Sender Ok». Вот поэтому, в настройках sendmail лучше включить опцию Wait for DNS.

Теперь нужно запустить какой-нибудь почтовый клиент, например kmail, и получить почту. Используйте следующие настройки сети в программе kmail: Сеть→ Отправка почты установите SMTP, порт 25, имя сервера — имя вашего почтовика, в рассматриваемом примере — это den.dhsilabs.com. Затем добавьте аккаунт для POP3:

Имя пользователя — den

Пароль — пароль, который используется для входа в систему.

Сервер — den.dhsilabs.com

Порт — 110

В результате вы должны получить то сообщение, которое ввели после data. При этом возможны проблемы при разрешении имени. Чтобы их избежать необходимо правильно настроить DNS или вместо имени почтового сервера использовать его IP-адрес. При добавлении нового пользователя не забудьте установить его пароль для входа в систему. Если этого не сделать, а пытаться получить почту без указания пароля, вы получите сообщение «Сбой аутентификации».

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

Примечание. В большинстве случаев, вас будет устраивать базовая настройка до тех пор, пока вас не возьмут под свой «протекторат» спаммеры — тогда вам нужно будет прочесть гл. 23 о методах защиты от спама. Однако может сработать один из законов Мерфи — для вашей системы не будет разработан конфигуратор sendmail и тогда вам все равно придется разбираться с файлами конфигурации.

Основным файлом конфигурации sendmail является файл /etc/sendmail.cf. В некоторых дистрибутивах этот файл расположен в каталоге /etc/mail. Об этом файле говорят, что он длиннее, чем лимузин у Билла Гейтса и что его редактирование происходит в режиме «глаза боятся, руки делают». Если вы не верите мне, откройте этот файл, и вы убедитесь в этом. Редактировать данный файл вручную могут только профессионалы-администраторы или разработчики программы sendmail.

Обычно для редактирования этого файла используется макропроцессор m4. Сначала вы подготавливаете специальный mc-файл. В этом файле записаны настройки .sendmail, но в более «читабельном» виде. При редактировании конфигурационных файлов также сказывается и их размер. Для сравнения: размер моего mc-файла — 2459 байт, а файла sendmail.cf — 46302 байт. Одно дело, редактировать файл размером в два килобайта, и совсем другое, если размер файла равен 46 килобайтам. В отличие от конфигурационного файла sendmail, вы сразу поймете, для чего предназначен тот или иной mc-файл. Затем, отредактировав mc-файл, нужно запустить макропроцессор m4 для создания файла конфигурации sendmail:

m4 my_config.mc > /etc/sendmail.cf

Перед выполнением этой команды я настоятельно рекомендую сохранить где-нибудь исходный файл sendmail.cf. В случае некорректной настройки вы всегда сможете восстановить его.

Файл конфигурации по умолчанию, который используется макропроцессором т4 для создания файла конфигурации программы sendmail (sendmail.cf), находится в каталоге /usr/share/sendmail-cf/cf. В более старых версиях программы sendmail он может быть расположен в каталоге /usr/lib/sendmail.

Как правило, этот файл называется sendmail.mc. Иногда он может называться и по-другому, например, redhat.mc, если вы используете операционную систему Red Hat или совместимую с ней.

Пример стандартного файла /usr/share/sendmail-cf/cf/redhat.mc приведен в листинге 13.1.

Листинг 13.1. Стандартный файл redhat.mc

divert(-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 a

dnl new /etc/sendmail.cf by running the following command: dnl

dnl m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

dnl

include('../m4/cf.m4')

VERSIONID('linux setup for Red Hat Linux')dnl

OSTYPE( 'linux' )

define('confDEF_USER_ID',"8:12") dnl

undefine( 'UUCP_RELAY' )dnl

undefine('BITNET_RELAY')dnl

define('confAUTO_REBUILD')dnl

define('confTO_CONNECT', '1m')dnl

define('confTRY_NULL_MX_LIST',true)dnl

define('confDONT_PROBE_INTERFACES',true)dnl

define('PROCMAIL_MAILER_PATH', '/usr/bin/procmail')dnl

define('ALIAS_FILE', '/eto/aliases')dnl

dnl define('STATUS_FILE', '/etc/mail/statistics')dnl

define('UUCP_MAILER_MAX', '2000000')dnl

define('conf USERDB_SPEC', '/etc/mail/userdb.db')dnl

define('confPRIVACY_FLAGS', 'authwarnings,novrfy,noexpn,restrictqrun')dnl

define('confAUTH_OPTIONS', 'A')dnl

dnl TRUST_AUTH_MECH('DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') dnl

dnl define('confAUTH_MECHANISMS', 'DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

dnl define('confTO_QUEUEWARN', '4h')dnl

dnl define('confTO_QUEUERETURN', '5d')dnl

dnl define('confQUEUE_LA', '12')dnl

dnl define('confREFUSE_LA', '18')dnl

dnl FEATURE(delay_checks)dnl

FEATURE('no_default_msa', 'dnl')dnl

FEATURE('smrsh',Vusr/sbin/smrsh')dnl

FEATURE('mailertable', 'hash-o /etc/mail/mailertable.db')dnl

FEATURE('virtusertable', 'hash –o /etc/mail/virtusertable.db')dnl

FEATURE(redirect)dnl

FEATURE(always_add_domain)dnl

FEATURE(use_cw_file)dnl

FEATURE(use_ct_file)dnl

FEATURE(local_procmail, '', 'procmail –t –Y –a $h –d $u')dnl

FEATURE('access_db','hash –o /etc/mail/access.db')dnl

FEATURE('blacklist_recipients')dnl

EXPOSED_USER('root' ) dnl

dnl This changes sendmail to only listen on the loopback device 127.0.0.1

dnl and not on any other network devices. Comment this out if you want

dnl to accept email over the network.

DAEMON_OPTIONS('Port=smtp,Addr=127.0.0.1, Name=MTA')

dnl NOTE: binding both IPv4 and IPv6 daemon to the same port requires

dnl a kernel patch

dnl DAEMON_OPTIONS (xport=smtp,Addr=::1, Name=MTA-v6, Family=inet6') 

dnl We strongly recommend to comment this one out if you want to protect 

dnl yourself from spam. However, the laptop and users on computers that 

do dnl not have 24x7 DNS do need this. 

FEATURE('accept_unresolvable_domains')dnl 

dnl FEATURE('relay_based_on_MX')dnl 

MAILER(smtp)dnl 

MAILER(procmail)dnl 

Cwlocalhost.localdomain

С помощью директивы FEATURE можно подключить ту или иную функцию программы sendmail. Например, функция mailertable предназначена для переопределения маршрутизации для конкретных доменов. Вы можете легко расширить функциональные возможности программы sendmail, добавив нужные вам функции в mc-файл.

Предположим, что вы хотите, чтобы названия компьютеров домена были скрыты. Это легко достигается с помощью добавления функции masquerade_envelope в ваш mc-файл. Для этого скопируйте файл redhat.mc в файл hide_hosts.me и добавьте в конец файла hide_hosts.me строки:

MASQUERADE_AS(my-domain.ru)dnl 

FEATURE(masquerade_envelope)dnl

Затем выполните команду:

m4 /usr/share/sendmail-cf/cf/hide_hosts.me