главная - Статьи - Почта - Sendmail
Установка и настройка sendmail
Теги: sendmail Почтовый сервер
Настраиваем sendmail (8.12.6/7/8) для виртуального почтового хостинга.
Установка sendmail
Сначала устанавливаем итз портов sendmail c поддержкой cyrus sasl (система аутентификации).
cd /usr/ports/mail/sendmail-sasl make install
После установки sendmail мы должны изменить файл /etc/make.conf. Добавляем в него строчку
SENDMAIL_CF_DIR= /usr/local/share/sendmail/cf
Если до этого стоял более старый sendmail, устанавливаем файл submit.cf
make submit.cf
Для запуска sendmail будем использовать следующий сценарий (переименуем его в удобоваримый формат):
mv /usr/local/etc/rc.d/sendmail.sh.sample /usr/local/etc/rc.d/030.sendmail.sh
Для нормального запуска обновленной версии мы должны указать путь к ней (файл /etc/mail/mailer.conf). Это можно сделать либо при помощи команды
make mailer.conf
либо вручную, изменив файл mailer.conf:
sendmail /usr/local/sbin/sendmail send-mail /usr/local/sbin/sendmail mailq /usr/local/sbin/sendmail newaliases /usr/local/sbin/sendmail hoststat /usr/local/sbin/sendmail purgestat /usr/local/sbin/sendmail
На этом установка sendmail окончена. Осталоь столько запустить его командой
/usr/local/etc/rc.d/030.sendmail.sh start sendmail sm-msp-queue
Сообщения sendmail sm-msp-queue говорят о том, что все прошло нормально.
Настройка sendmail
Будем считать, что мы настраиваем два виртуальных почтовых домена: perldoc.ru и perlfaq.ru. Для настройки sendmail c поддержкой виртуального постового хостинга нам потребуется создать (или изменить) следующие файлы:
- freebsd.mc
- aliases
- access
- local-host-names
- virtusertable
aliases
Этот файл описывает пользовательские псевдонимы, используемые sendmail. Файл расположен в каталоге /etc/mail и представляет собой список вида
имя addr_1, addr_2, addr_3...
Более подробно структура файла aliases описана в aliases (5). В этот файл мы добавляем строку
root: admin@perldoc.ru
Вся локальная почта, адресованная пользователю root, теперь будет приходить на адрес admin@perldoc.ru.
access
В этом файле мы указываем, для каких IP адресов sendmail должен принимать и пересылать почту. Поскольку для эих целей мы будем использовать аутентификацию cyrus sasl, мы разрешим только отсылку с локального хоста
localhost.localdomain RELAY localhost RELAY
local-host-names
В этом файле мы храним названия доменов, для которых наш сервер должен обрабатывать почту. Поскольку мы хотим использовать наш сервер для двух виртуальных почтовых доменов perldoc.ru и perlfaq.ru, пропишем их в файл:
perldoc.ru perlfaq.ru
virtusertable
В файле virtusertable мы указываем sendmail, куда направлять почту, пришедшую на адреса в доменах perldoc.ru и perlfaq.ru.
stellar@perldoc.ru stellar-perldoc.ru admin@perldoc.ru admin-perldoc.ru @perldoc.ru error:nouser No such user here stellar@perlfaq.ru stellar-perlfaq.ru @perlfaq.ru error:nouser No such user here
Вся почта, пришедшая на адрес stellar@perldoc.ru будет направляться в почтовый ящик пользователя stellar-perldoc.ru, а почта, пришедшая на admin@perldoc.ru, соответственно будет отсылаться пользователю admin-perldoc.ru. Тоже самое будет и для домена perlfaq.ru. Если на наш домен будет прислана почта с несуществующем пользователем, сработает строчка
@perldoc.ru error:nouser No such user here
и sendmail откажется принимать такое сообщение.
freebsd.mc
Теперь нам осталось только изменить конфигурацию файла freebsd.mc, чтобы sendmail научился работать с виртуальными почтовыми доменами. Здесь надо понимать, что в том случае, когда существует файл, у которого имя совпадает с названием машины (например, для машины с именем genius файл будет genius.mc), он используется вместо файла freebsd.mc
Вот примерный вид конфигурационного файла:
1 divert(0) 2 VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.10.2.16 2002/05/22 16:39:14 gshapiro Exp $') 3 OSTYPE(freebsd4) 4 DOMAIN(generic) 5 6 FEATURE(access_db, `hash -o -T/etc/mail/access') 7 FEATURE(blacklist_recipients) 8 FEATURE(local_lmtp) 9 dnl FEATURE(mailertable, `hash -o /etc/mail/mailertable') 10 FEATURE(virtusertable, `hash -o /etc/mail/virtusertable') 11 12 dnl Uncomment to allow relaying based on your MX records. 13 dnl NOTE: This can allow sites to use your server as a backup MX without 14 dnl your permission. 15 dnl FEATURE(relay_based_on_MX) 16 17 dnl DNS based black hole lists 18 dnl -------------------------------- 19 dnl DNS based black hole lists come and go on a regular basis 20 dnl so this file will not serve as a database of the available servers. 21 dnl For that, visit http://dmoz.org/Computers/Internet/Abuse/Spam/Blacklists/ 22 23 dnl Uncomment to activate Realtime Blackhole List 24 dnl information available at http://www.mail-abuse.com/ 25 dnl NOTE: This is a subscription service as of July 31, 2001 26 FEATURE(dnsbl) 27 dnl Alternatively, you can provide your own server and rejection message: 28 FEATURE(dnsbl, `blackholes.mail-abuse.org', `"550 Mail from " $&{client_addr} " rejected, see http://mail-abuse.org/cgi-bin/lookup?" $&{client_addr}') 29 30 dnl Dialup users should uncomment and define this appropriately 31 dnl define(`SMART_HOST', `your.isp.mail.server') 32 33 dnl Uncomment the first line to change the location of the default 34 dnl /etc/mail/local-host-names and comment out the second line. 35 dnl define(`confCW_FILE', `-o /etc/mail/sendmail.cw') 36 define(`confCW_FILE', `-o /etc/mail/local-host-names') 37 38 dnl Uncomment both of the following lines to listen on IPv6 as well as IPv4 39 dnl DAEMON_OPTIONS(`Name=IPv4, Family=inet') 40 dnl DAEMON_OPTIONS(`Name=IPv6, Family=inet6') 41 42 TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 PLAIN LOGIN')dnl 43 define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 PLAIN LOGIN')dnl 44 define(`confDEF_AUTH_INFO', `/etc/mail/auth/auth-info')dnl 45 FEATURE(`no_default_msa')dnl turn off default entry for MSA 46 DAEMON_OPTIONS(`Port=25, Name=MSA, M=E')dnl 47 48 define(`confMAX_RCPTS_PER_MESSAGE', `10') 49 define(`confMAX_MESSAGE_SIZE', `1048576') 50 51 define(`confBIND_OPTS', `WorkAroundBrokenAAAA') 52 define(`confMAX_MIME_HEADER_LENGTH', `256/128') 53 define(`confNO_RCPT_ACTION', `add-to-undisclosed') 54 define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy') 55 MAILER(local) 56 MAILER(smtp)
В строке 6 мы задаем файл с пользовательскими псевдонимами; в десятой строке - имя файла трансляции виртуальных пользователей в настоящих, а в 36-й строке - названия доменов, для которых наш сервер должен обрабатывать почту.
Также ограничим максимальный размер письма одним мегабайтом (строка 49) и запретим рассылать письмо одновременно более, чем 10 получателям (строка 48). Если есть необходимость отправки всей почты на промежуточный SMTP сервер (например, на SMTP сервер провайдера), следует раскомментировать строку 31 и вместо "your.isp.mail.server" указать IP адрес или имя SMTP сервера провайдера.
Запуск и тестирование
Теперь, когда почти все сделано, нам надо пересобрать заново файл конфигурации sendmail и обновить базы данных. Делается это следующим набором команд:
cd /etc/mail rm *.db rm freebsd.cf make all make install
Результатом будет нечто вроде этого:
/usr/bin/m4 -D_CF_DIR_=/usr/local/share/sendmail/cf/ /usr/local/share/sendmail/cf/m4/cf.m4 genius.mc > genius.cf /usr/sbin/makemap hash virtusertable.db < virtusertable chmod 0640 virtusertable.db /usr/sbin/makemap hash access.db < access chmod 0640 access.db /usr/sbin/sendmail -bi /etc/mail/aliases: 26 aliases, longest 18 bytes, 276 bytes total chmod 0640 /etc/mail/aliases.db install -m 444 freebsd.cf /etc/mail/sendmail.cf install -m 444 freebsd.submit.cf /etc/mail/submit.cf
Теперь перезапускаем sendmail
/usr/local/etc/rc.d/030.sendmail.sh stop /usr/local/etc/rc.d/030.sendmail.sh start
и тестируем:
telnet localhost 25
Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 localhost.my.domain ESMTP Sendmail 8.12.6/8.12.6; Mon, 30 Dec 2002 13:31:56 +0300 (MSK) EHLO localhost 250-localhost.my.domain Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN 250-DELIVERBY 250 HELP QUIT 221 2.0.0 localhost.my.domain closing connection
Наличие строчки "250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN" говорит нам о том, что sendmail может аутентифицировать пользователя. Добавляем пользователя:
saslpasswd2 admin-perldoc.ru Password: Again (for verification):
Вводим пароль пользователя и проверяем:
sasldblistusers2 admin-perldoc.ru@genius: userPassword
Собственно говоря, на этом настройка sendmail закончена. Теперь настраиваем The Bat! для того, чтобы можно было отправлять почту с аутентификацией:
Заходим в Ящик -> Свойства почтового ящика -> Транспорт -> Аутентификация
Выделяем чекбокс "Аутентификация SMTP (RFC-2554)".
Переключаем кнопку "Использовать параметры, указанные ниже."
Вводим имя пользователя и пароль, которые создали при помощи saslpasswd2.
Пользователь: admin-perldoc.ru@genius.
Пароль: *********
(!) Обратите внимание на то, что имя пользователя указано вместе с именем машины.
Выделяем чекбокс "Требовать безопасную (MD5) аутентификацию".
В том случае, если используется MS Outlook или другой почтовый клиент, в котором нет безопасной аутентификации (DIGEST-MD5, CRAM-MD5), необходимо использовать аутентификацию по методам PLAIN или LOGIN. При этом в качестве имени пользователя надо использовать имя пользователя БЕЗ добавленного имени машины. В нашем случае имя пользователя будет выглядеть так: admin-perldoc.ru.
После отправки письма в лог-файле /var/log/maillog должны быть примерно такие записи:
Dec 30 13:54:41 genius sm-mta[77570]: AUTH=server, relay=xxx.yyy.zzz.kkk [xxx.yyy.zzz.kkk], authid=admin-perldoc.ru@genius, mech=CRAM-MD5, bits=0
Поддерживается http://stellar.df.ru
Авторизуйтесь для добавления комментариев!