[mdk-re] fetchmail повержен ;)

Peter V. Saveliev =?iso-8859-1?q?peet_=CE=C1_infosite=2Eru?=
Пт Дек 7 16:07:01 MSK 2001


Vyt wrote:

> On Fri, 7 Dec 2001 13:09:50 +0300 (MSK)
> "Peter V. Saveliev" <peet на infosite.ru> wrote:
>
> > УРА!
> >
> > Я победил fetchmail, и postfix впридачу! Теперь все контролирует
> > virtual postfix'a, и почта идет, куда надо. Всем спасибо.
>
> А поделиться? ;)
>
> <skipped>

ACHTUNG. Здесь не описаны:
    - настройка сети
    - регистрация домена
    - настройка ppp
    - настройка ipchains
    - настройка named
См. соотв. доки.

------------------------------------------------------------------
Задача: в офис фирмы установить сервер, осуществляющий... Ну, там, много
и чего и забирающий почту с сервера провайдера.

Условия: "мы" - nowhere.spb.ru, провайдер - provider.net, почтовый ящик
- корпоративный, пользователь looser с паролем balabala на
mail.provider.net,
доступ по модему.

Сервер: ALT Linux Mdk-RE, ядро 2.2.19; postfix, sendmail, procmail из
апдейтов.

Вот общая схема работы:

       To: userX на nowhere.spb.ru
SENDER ------------------------> PROVIDER
                                    |
               (fethmail)           |
        /---------------------------+
       /
      / fetchmail -> postfix
SERVER -----------------------------+
 |                                  |
 + -- root <------------------------+
 |                                  |
 + -- postmaster <------------------+
 |                                  |
 + -- user0 <-----------------------+
 |                                  |
 + -- user1 <-----------------------+
...                                ...
 + -- userk <-----------------------+

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

POSTFIX ----------------------------------------

Сначала - настройка постфикса. Для более осмысленных действий надо
заглянуть в документацию, идущую с пакетом - там очень понятно все
расписано. Пока же - минимум, который позволит работать (должен
заметить, что ALT'овский пакет несет настройки по умолчанию, достаточные
для функционирования локального сервера).
/etc/postfix

    main.cf:
# Добавляем/изменяем строки на:
myorigin = nowhere.spb.ru
# ... иначе не поймет провайдер
virtual_maps = hash:/etc/postfix/virtual
# ... локальная почта должна быть локальной, см. ниже
relayhost = mail.provider.net
# ... все нелокальное засылать нелокально ;)
body_checks = regexp:/etc/postfix/body_checks
header_checks = regexp:/etc/postfix/header_checks
# спам нам не нужен, вирусы тоже. За содержимым этих
# файлов можно сползать хоть на opennet.ru

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

    virtual:
root            root на localhost
postmaster      postmaster на localhost
user0           user0 на localhost
@nowhere.spb.ru user1 на localhost

... что объясняется спецификой компании. В этом пример раскартированы
как локальные пользователи, user0, так и корпоративные, user1. Вся
почта, идущая на user0 на nowhere.spb.ru придет пользователю user0, вся
остальная - user1. Этот пример легко расширить либо модифицировать по
своему вкусу. Можно иметь несколько корпоративных ящиков, разгребая их,
например, серверами отделов ;) Как это происходит в моем случае, ибо
главный сисадмин - фанат NT - считает, что линух не в состоянии
разгребать корпоративные ящики и держит свору NTей ;)

    aliases:
# Обязательно проставьте, кому перенаправлять почту root, postmaster,
etc.!
postmaster:  user0
root:        user0

Например, так. Можно считать, что от нас почта пойдет. Если настроен DNS
;)

FETCHMAIL --------------------------------------

Теперь надо забрать почту от провайдера. IP у нас меняется, мы не всегда
доступны, потому в DNS наш сервер никогда не пропишут. Значит, надо
приложить усилия и забрать почту самим. Для этого есть fetchmail.

Конфигурацию легко провести через fetchmailconf, но он тянет за собой
много других пакетов, и - что хуже всего - иксы, в общем, это не
вариант. Читать man fetchmail не то чтобы полезно, но необходимо, но в
основном как пособие по медитации ;)

Потому приведу пример конфига.

set postmaster "user1"
set bouncemail
set no spambounce
set properties ""
set daemon 300
poll mail.provider.net with proto POP3 localdomains nowhere.spb.ru
       user 'looser' there with password 'balabala' is user0 user1 here

Этот конфиг дает возможность забирать почту от провайдера, выцепляя
оттуда почту user0 (наш локальный фаворит), все остальное отдавая
корпоративному user1. Можно вместо 'user0 user1' поставить '*', тогда
fetchmail будет искать соответствие среди всех системных пользователей.
Можно устраивать какие угодно сочетания, учитывая, что все это пойдет
потом через виртуал постфикса. В моем случае этого достаточно.

Нетрудно заметить, что раскидывание по пользователям осуществляет как
постфикс, так и фетчмэйл, и нужное сочетание паттернов выбирается в
зависимости от задачи. Благо выбор получается очень широкий - тем полнее
контроль за потоком ;)

Немного про опции/команды:

set postmaster - кому отсылать почту, которая не подходит под паттерн,
указанный в параметре 'is'.

set daemon - через сколько секунд проверять почту на сервере.

localdomains - очень важно!!! если ее не указать, можно получить
ситуацию, когда почта, пришедшая, по идее, на корпоративный ящик, вместо
того, чтобы мирно осесть уйдет снова к провайдеру - вроде, форвард на
самого себя ;((

Ну, все. Остается пожелать удачи.
Петр.







Подробная информация о списке рассылки community