Disclamer: Документ не является переводом, материал полностью подготовлен мной.
HOW TO описывает самостоятельное создание почтовой системы на основе связки
sendmail+qpopper. Пути ко всем файлам приняты по умолчанию. Проверено на
дистрибутиве slackware. Проверка на других дистрибутивах осуществляется по мере их
попадания в руки автора.
Обо всех ошибках, замечаниях и так далее пишите multik@sw.ru
Обычно в дистрибутивах все нужные установлено, Вам остается лишь проверить файлы в
каталоге /etc/mail и настроить их.
*** Инсталляция
Проверьте, установлен ли у вас sendmail. Это можно сделать так:
bash$ which sendmail
/usr/bin/sendmail
bash$
Если же which ничего не вывел, то нужно сначала установить sendmail. Пакет можно взять
в вашем дистрибутиве (его название должно начинаться на sendmail). Либо, если Вы
желаете быть увереными в том, что у Вас последняя версия, тогда пакет можно взять либо
с сайта производителя вашего дистрибутива, либо напрямую с ftp.sendmail.org (например,
версия 8.9.3 доступна по
ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.9.3.tar.gz).
Установка производится набором простых команд
tar zxvf sendmail.8.9.3.tar.gz
cd sendmail.8.9.3
./configure
make
su
make install
Если же у вас sendmail надодится в rpm формате, то команды должны быть следующие:
rpm -i sendmailxxxx.rpm (если у вас sendmail раньше не стоял)
rpm -Uhv sendmailxxxx.rpm (апгрейд)
Зависимость всех настроек от sendmail.cf будет обьяснена ниже.
*** Настройка почтовых алиасов.
Для начала глянем на /etc/aliases
# Basic system aliases -- these MUST be present.
MAILER-DAEMON: postmaster
postmaster: root
# General redirections for pseudo accounts.
bin: root
daemon: root
games: root
ingres: root
nobody: root
system: root
toor: root
uucp: root
# Well-known aliases.
manager: root
dumper: root
webmaster: root
abuse: root
# trap decode to catch security attacks
decode: root
Формат этого файла очень простой: до двоеточия идет имя пользователя, с которым
sendmail должен разбираться, а после идет имя (или имена) пользователя, на которого
пересылается все почта, предназначенная этому пользователю. В вышеприведенном файле
вся почта будет пересылаться пользователю root.
С помощью этого файла легко можно сделать простой список рассылки:
everyone: user1,user2,user3@domain.ru
В данном примере все письма, которые приходят на имя пользователя everyone, будут
разосланы пользователям user1, user2, user3@domain.ru
Этот файл в основном служит для служебных целей и трогается редко. Если же самому
пользователю необходимо перевести доставку своей корреспонденции на другую машину,
то есть два варианта: fetchmail (описыватся ниже) и создание в своем домашнем каталоге
файла .forward. Формат его еще проще: в нем внутри просто записан емайл, на который
необходимо отфорвардить почту.
*** Поддержка нескольких доменов
За эту возможность освечает слудующая строчка в .mc файле
FEATURE(virtusertable)
Для разграничения пользователей по нескольким доменам служит файл
/etc/mail/virtusertable
Например, вы держите 2 домена dom1.ru и dom2.ru и вам надо, что бы пользовали
info@dom1.ru и info@dom2.ru не пересекались. Для этого заводим 2х пользователей: info1
и info2, и прописываем следующие строчки
info@dom1.ru info1
info@dom2.ru info2
И почта, приходящая на info@dom1.ru, будет уходить на пользователя info1.
Еще одним применением этого файла является разнос пользователей по своим доменам.
Если на машине, обслуживающей dom1.ru и dom2.ru заведен пользователь pupkin, то он
сможет получать почту и как pupkin@dom1.ru и как pupkin@dom2.ru, что бы этого не не
происходило, делаем так:
pupkin@dom2.ru error:nouser No such user
и теперь при попытке принять почту на pupkin@dom2.ru sendmail будет отказывать в
приеме почты отправляющемому.
Как вариант, этот же файл можно использовать для перенаправления почты:
pupkin@dom1.ru pupk
Теперь почта на pupkin@dom1.ru будет ложиться в почтовый ящик пользователя pupk.
*** Защита от спама или релееинг
Контроль за данными функциями осуществляют 2 файла
/etc/mail/relay-domains
/etc/mail/access
уточнить путь до relay-domains можно в следеющей строчке sendmail.cf
# Hosts that will permit relaying ($=R)
FR-o /etc/mail/relay-domains
Включение access в .mc файле производится слудующей строчкой:
FEATURE(access_db)dnl
В файле relay-domains лежат имена доменов, для которых разрешен релееинг на данном
почтовом узле, формат access чуть-чуть посложнее:
[имя хоста или е-майл] [действие]
Под дейcтвием может выступать либо REJECT, либо RELAY. Соответственно либо
отказать, либо пропустить.
Запомните, после изменения access необходимо обновить access.db командой
makemap hash assess < access
(Команда приведена для настроек по умолчанию)
*** Создание и настройка sendmail.cf
Все необходимые файлы лежат в /usr/src/sendmail/cf/cf
Создайте файл с призвольным именем и расширением .mc следующего содержания:
1: divert(-1)
2: include(../m4/cf.m4)
3: VERSIONID('$Id$')
4: OSTYPE(linux)dnl
5: define('confCOPY_ERRORS_TO','postmaster')dnl
6: define(`LUSER_RELAY',`local:postmaster')dnl
7: MAILER(local)dnl
8: MAILER(smtp)dnl
9: MAILER(pop)dnl
10: MAILER(procmail)dnl
11: FEATURE(virtusertable)dnl
12: FEATURE(access_db)dnl
13: FEATURE(nodns)dnl
Цифры с двоеточиями в файле не присутствуют: здесь я их употребил для
ориентирования.
1я строчка указывает препроцессору, что бы он вырезал комментарии из готового
sendmail.cf
2-4 - служебные, включают необходимые дополнения и указывают тип ОС (в данном
случае linux)
5 - указывает, что письма о всех ошибках следует напрвалять на пользователя postmaster
6 - говорит sendmail'у принимать письма несуществующим пользователям и
перенаправлять их postmaster'у. Это полезно, когда состав пользователей изменился.
7-10 служебные
11 - включить поддержку виртуальных пользователей
11 - включить контроль релеинга.
13 - разрешить принимать почту с неопределямых по DNS хостов
После создания файла выполняем команду
m4 файл.mc > /etc/sendmail.cf
И перезапустите sendmail (killall -HUP sendmail). Теперь Вы имеете доступ до своей
машины по smtp протоколу.
*** Доступ по POP3 или забор почты почтовыми клиентами.
Для осуществления возможности забора почты по протоколу POP3 Вам необходимо
поставить POP3 сервер. Sendmail НЕ РАБОТАЕТ по протоколу POP3 !. POP3 сервер в
принципе может быть любой, но мне нравится qpopper.
Забираем qpopper c ftp://ftp.qualcomm.com/eudora/servers/unix/popper
говорим в консоли
uncompress qpopperxxxx.tar.Z
tar xvf qpopper2.53.tar
cd qpopperxxxx
./configure --enable-specialauth
make
su
Ключ для configure нужен для того, чтобы сервер начал понимать пароли, которые скрыты
в /etc/shadow.
И вручную копируем получившийся qpopper туда, куда нам удобнее (я скопировал в
/usr/sbin)
Проверяем строчку в /etc/inetd.conf
pop3 stream tcp nowait root /usr/sbin/tcpd popper -s
И перезапустите inetd командой killall -HUP inetd.
Теперь можно проверить, как работает qpopper
bash$telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK QPOP (version 2.53) at multik.sw.ru starting.
user multik
+OK Password required for multik.
pass ********
+OK multik has 0 messages (0 octets).
quit
+OK Pop server at multik.sw.ru signing off.
Connection closed by foreign host.
bash$
*** Забор почты с других серверов
Не секрет, что популярная читалка почты из netscape не поддерживает много
пользовательских аккаунтов. А у Вас их много - что же делать? Использовать fetchmail!
Эта маленькая программа способна забрать почту откуда угодно по какому угодно
протоколу и отдать ее Вашему MTA для дальнейшей работы.
Перейдя в свой домашний каталог, создайте файл .fetchmailrc
touch .fetchmailrc
Смените ему права на безопасные.
chmod 600 .fetchmailrc
Занесите в него строчку, аналогичную следущей
poll pop.proxy.dsi.ru proto POP3 user multik pass [не скажу]
poll [имя_почтового_сервера] proto [почтовый_протокол] user [пользователь]
pass [его-пароль] to [кому_локально_отдавать почту]
Для тех пользователей, которым надо забирать почту из провайдерского почтового ящика,
в который ложиться почта для многих пользователей, лучше проконсультироваться с
провайдером. Но многие провайдеры для таких ящиков включают поддержку X-Envelope-
To (посмотрите любое письмо, которое пришло на данный адрес. Если там есть такая
строка - то прочитайте man fetchmail на предмет опции envelope. Но в любом случае
лучше лишний раз проконсультируйтесь с провайдером - он Вам подскажет, как он сделал
для Вашего ящика и какие настройки необходимо у Вас сделать)
И все, можете запустить fetchmail и проверить, как произойдет забор почты. Если будут
какие-либо ошибки - то Вы их увидите.
Если все в порядке, запустите fetchmail в режиме демона, добавив к его вызову ключ -d,
после которого укажите в секундах интервал, который fetchmail будет ожидать между
проверками почты.
Все, в основном почта настроена. Если возникли проблемы или у Вас есть предложения
или решения некоторых проблем - пишите
|
|
|