LinuxNews Rambler's Top100 Service
Home Новости Документация Общение

Просмотр документа

 
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 будет ожидать между 
проверками почты.

Все, в основном почта настроена. Если возникли проблемы или у Вас есть предложения 
или решения некоторых проблем - пишите 




 
Подписка от Subscribe.RU
ваш e-mail для получения новостей
 
Rambler Top 100 TopList

Copyright 1999 SWsoft, All rights reserved.
По всем вопросам обращайтесь по телефону (+7 095) 788-0705
или пишите нам по адресу: info@linuxnews.ru
SW Interactive