The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Виртуальный хостинг для sendmail (mail sendmail virtual)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: mail, sendmail, virtual,  (найти похожие документы)
From: Alexey Karguine <bm@netmaster.ru> Newsgroups: email Date: Mon, 5 Sep 2003 14:31:37 +0000 (UTC) Subject: Виртуальный хостинг для sendmail ВИРТУАЛЬНЫЙ ХОСТИНГ ДЛЯ sendmail # Оригинал: http://www.sendmail.org/virtual-hosting.html # Перевод: Alexey Karguine, bm@netmaster.ru Множество людей и компаний в наше время заводят себе собственные доменные имена и хотят получать на них почту. Они могут платить за это своим провайдерам или делать это сами. Это статья рассказывает, как сделать это самому и организовать виртуальный хостинг на базе sendmail. Предполагается, что читающий владеет некоторыми знаниями sendmail, администрирования Unix и протоколов Интернет. Лучший источник информации по sendmail -- в этой книге: Sendmail, 2nd Edition. [http://www.ora.com/catalog/sendmail2/noframes.html&#093;. Конфигурирование DNS. Для начала вы должны зарегистрировать домен и настроить под него DNS. 1. Выберите свободное доменное имя. В нашем примере мы будем использовать имя yourdomain.com. 2. Настройте две машины как первичный и вторичный DNS-сервера. Мы предполагаем, что вы знаете, как это сделать, однако очень рекомендуем к прочтению книгу ``DNS and BIND, 4th Edition'' [http://www.ora.com/catalog/dns4/&#093; 3. Сконфигурируйте MX-записи для своего домена (Замечание: CNAME-записи не могут быть использованы; см. 5.2.2 [http://www.sendmail.org/rfc/1123.html#5.2.2] или RFC 1123 [http://www.sendmail.org/rfc/1123.html&#093; для деталей.) Записи MX обсуждаются в книге sendmail в главе 15.3, как сконфигурировать их описано в главе 21.3. У вас есть два варианта настройки: o Если сервер, который будет обслуживать почту для вашего домена имеет постоянное подключение к Интернету, он должен быть описан как первичный MX-хост для этого домена. В этом случае MX-запись будет выглядеть примерно так: yourdomain.com. IN MX 10 yourmailserver.yourdomain.com. o Иначе, вы должны будете найти машину, которая будет накапливать почту для вас в то время, когда вы не подключены к Интернету. Эта машина должна быть настроена так, чтобы релеить ваш домен. Если она построена на базе sendmail, то для этого будет достаточно добавить ваш домен в файл relay-domains. Вы должны будете упомянуть эту машину в ваших MX-записях: yourdomain.com. IN MX 10 yourmailserver.yourdomain.com. yourdomain.com. IN MX 20 othermailserver.otherdomain.com. 4. После того, как DNS-серверы будут готовы, зарегистрируйте домен с помощью одного из регистраторов. [http://www.internic.net/regist.html&#093; Настройка sendmail. Теперь пришло время настроить sendmail. 1. Загрузите sendmail с ftp://ftp.sendmail.org/pub/sendmail/. Вы автоматически получите короткое сообщение, в котором будет версия последнего релиза. Все инструкции ниже относятся к версии 8.10.0 и выше. 2. Скомпилируйте и установите sendmail на свою машину. В большинстве случаев это процедура состоит из распаковывания архива, чтения README и sendmail/README файлов и запускания команды Build в директории sendmail. Смотрите файл INSTALL в для дополнительной информации. 3. Сконфигурируйте sendmail. Вот тут мы ударимся в детали. a. Для начала прочтите cf/README файл целиком. Это даст вам инструкции для написания .mc-файла в директории cf/cf. Ваш mailserver.mc в общем случае будет выглядеть так: divert(-1)dnl # # This file contains definitions for mailserver.yourdomain.com # divert(0)dnl VERSIONID(`@(#)mailserver.mc 1.0 (yourdomain.com) 5/1/97') OSTYPE(solaris2)dnl DOMAIN(yourdomain.com)dnl FEATURE(`virtusertable', `dbm /etc/mail/virtusertable')dnl MAILER(local)dnl MAILER(smtp)dnl В этом примере операционная система (OS) solaris2. Обычно файл cf/domain/yourdomain.com.m4 выглядит так: divert(-1)dnl # # This file contains the global definitions for yourdomain.com # divert(0)dnl VERSIONID(`@(#)yourdomain.com.m4 1.0 (yourdomain.com) 5/1/97') FEATURE(`use_cw_file')dnl В нем может быть еще некоторое количество директив FEATURE() и define(). Директива virtusertable -- это то, ради чего все делается. ВНИМАНИЕ: Если вы собрали sendmail с NEWDB вместо NDBM, вы должны изменить dbm на hash в строке описания virtusertable. b. Сгенерируйте ваш файл /etc/mail/sendmail.cf из файла mailserver.mc: cd sendmail-VERSION/cf/cf ./Build mailserver.cf cp mailserver.cf /etc/mail/sendmail.cf 4. Создайте таблицу виртуальных пользователей. Во всех деталях это описано в главе 19.6.28 книги sendmail; здесь приведено в общих чертах. Таблица -- это база данных, которая отображает виртуальные адреса в реальные. Создайте текстовый файл, каждая строка которого состоит из пары ключ/значение разделенных символом табуляции. Например: joe@yourdomain.com jschmoe jane@yourdomain.com jdoe@othercompany.com @yourdomain.com jschmoe В первом примере адрес joe@yourdomain.com будет отображен в локального пользователя jschmoe, jane@yourdomain.com будет отображен в удаленный адрес jdoe@othercompany.com, а все остальное, что придет в домен yourdomain.com будет переправлено пользователю jschmoe. joe@yourdomain.com jschmoe bogus@yourdomain.com error:nouser No such user here list@yourdomain.com yourdomain-list @yourdomain.com %1@othercompany.com Во втором примере адрес joe@yourdomain.com будет отображен в локального пользователя jschmoe, адрес bogus@yourdomain.com вернет ошибку, адрес list@yourdomain.com будет отображен в локального пользователя yourdomain-list (которого вы можете использовать для списка рассылки) и любой другой пользователь в домене yourdomain.com будет отображен в одноименного удаленного пользователя домена othercompany.com. Замечание 1: Если у вас есть локальный пользователь, скажем sam, и для него отсутствует правило для отображения (либо персональное, либо правило вида @yourdomain.com), sendmail все равно доставит почту локальному пользователю sam. Чтобы это избежать вы должны либо использовать выделенные ключи для пользователей со значением error:nouser, либо использовать общие правила (в оригинале ``all-catch keys''). Замечание 2: Если вы хотите отображать один виртуальный адрес в несколько реальных, вы не должны делать этого напрямую. Сделайте отображение виртуального адреса в один реальный, а его отобразите на несколько при помощи локального файла алиасов. Например в таблице виртуальных пользователей: joe@yourdomain.com localjoe затем в файле алиасов: localjoe: joe@othercompany.com, jane@othercompany.com Замечание 3: Допускается использование нескольких доменов, виртуальные адреса в каждом домене независимы. Например вы можете сделать так: joe@yourdomain1.com localjoe joe@yourdomain2.com joe@othercompany.com joe@yourdomain3.com localjoe joe@yourdomain4.com error:nouser No such user here Для людей, администрирующих несколько доменов вероятно будет проще вести списки виртуальных пользователей в отдельных файлах для каждого домена, а потом написать небольшой скрипт, который бы объединял все эти файлы в один. Но здесь мы опережаем себя. Это следующая ступень. 5. Соберите файл виртуальных пользователей. Если текстовый файл виртуальных пользователей сохранен под именем sourcefile и вы используете базу данных dbm, используйте команду: makemap dbm /etc/mail/virtusertable < sourcefile Эта команда создаст один или несколько не-текстовых файлов (обычно это /etc/mail/virtusertable.dir и /etc/mail/virtusertable.pag, или /etc/mail/virtusertable.db), но не меняет файл /etc/mail/virtusertable, поэтому файл /etc/mail/virtusertable -- рекомендованное расположение для исходной таблицы. 6. Если вы хотите использовать обратное отображение локальных пользователей для исходящей почты, вы должны добавить поддержку для generics-таблицы в ваш .mc файл: FEATURE(`genericstable', `dbm /etc/mail/genericstable')dnl GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl и создать файл /etc/mail/genericstable, который выглядит как /etc/mail/virtusertable с той разницей, что колонки поменяны местами: jschmoe joe@yourdomain.com Замечание. Вы можете обратиться также к статье ``Masquerading and Relaying'' [http://www.sendmail.org/m4/masquerading.html&#093;. 7. Добавьте имя вашего домена в класс w. Обычно для этого достаточно добавить его имя в файл local-host-names также известный как sendmail.cw в версиях sendmail до 8.10. Также, если вы используете genericstable, вы должны добавить имена всех доменов, для которых вы хотите обратного отображения в файл /etc/mail/generics-domains. 9. Перезапустите sendmail или пошлите ему сигнал SIGHUP. Заметим, что вы НЕ должны перезапускать sendmail при изменении таблиц виртуальных пользователей или таблиц обратного отображения. Перезапуск требуется только в случае изменения /etc/mail/sendmail.cf или файлов класса, таких как local-host-names. Есть дополнительный шаг для тех хостов, которые не подключены к Интернету постоянно. Когда вы подключаетесь, вы должны спровоцировать доставку сообщений, накопленных на вторичном почтовом сервере. Для этого, когда ваш первичный сервер соединяется, вы должны выполнить скрипт etrn.pl, который находится в директории contrib поставки sendmail. etrn.pl secondary-mx-host yourdomain.com Советуем поместить эту строку в конец скрипта, который запускает sendmail. Еще лучше поместить эту строку в скрипт инициализирующий подключение в интернету на первичном MX. На этом все, пользователи должны получить возможность посылать почту на адреса @yourdomain.com. Однако, было бы неплохо протестировать конфигурацию и быть уверенными, что все работает, как надо перед тем, как оглашать новое доменное имя и почтовые адреса для него. Если что-то не работает, как ожидается, вы можете проверить это с помощью тестового режима sendmail: sendmail -bt Вот несколько примеров вещей, которые можно попробовать протестировать: # убедитесь, что домен находится в классе w: $=w # отображение работает? /map virtuser joe@yourdomain.com /map virtuser jane@yourdomain.com /map virtuser @yourdomain.com # обратное отображение? 3,0 joe@yourdomain.com 3,0 some@yourdomain.com Если у вас что-то не получается и вы не можете найти ответы в различных README, которые идут вместе с sendmail, в sendmail FAQ [http://www.sendmail.org/faq/&#093;, или в книге sendmail [http://www.ora.com/catalog/sendmail2/noframes.html&#093;, вы можете послать письмо на sendmail-questions@sendmail.org с просьбой о помощи.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Anonymous (?), 23:49, 12/02/2007 [ответить]  
  • +/
    The same in English:
    http://sendmail.org/tips/virtual-hosting.php
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру