UUPC/Extended


Проблема получения почты с провайдера на весь домен по протоколу UUCP и раздачи ее по локальной сети с использованием SMTP/POP3 может быть решена при помощи пакета UUPC/Extended by Kendra Electronics версии 1.13e и выше.

Преимущества такого решения по сравнению с другими заключается в том, что пакет UUPC/Extended имеет собственные демоны POP3 и SMTP. Это позволяет пользователям получать почту (протокол POP3) и отправлять её (протокол SMTP), используя любые стандартные средства (например, PMMail под OS/2, The Bat под Windows). Причём демоны SMTP/POP3 практически не нуждаются в настройке. Необходимо только настроить собственно UUPC.

Особенности пакета

Пакет UUPC/Extended создан и поддерживается для многих платформ на PC: Unix, DOS, Win32, OS/2. Интерфейс пользователя данной системы не радует глаз ползущими по экрану червяками, да и вообще довольно суров, как всё Unix-овое. Но нам не привыкать. Единственное, чего лично мне не хватает - это хоть какой-то индикации прогресса, когда качается почтовый пакет. Но погодите пугаться - давайте разберемся, нам шашечки или ехать? UUPC/Extended имеет много полезных возможностей, таких как забор почты по tcp/ip, гибкие настройки рутинга почты, и другие. О многих фичах я и не знаю, но подозреваю, что UUPC/Extended может всё, что можно придумать в рамках протокола UUCP. И у меня есть на то основания :)

Где его берут

Итак, заходим на www.kew.com. Там можно найти несколько версий UUPC/Extended. На сегодня (10.07.1999) имеется версия 1.13f. Если у вас уже есть 1.13e - тоже годится, версии 1.13f и 1.13e для OS/2 ничем не отличаются. В версиях для OS/2 раньше 1.13e был серьезный баг в POP3, поэтому я рекомендую 1.13e и выше. У меня стоит версия 1.13e.

Нам понадобятся следующие файлы: upc13f21.zip (536k), upc13f22.zip (180k), upc13f23.zip (172k) - это собственно программы, и upc13bad.zip (230k) - документация и примеры конфигурации в текстовом формате. По вкусу можно добавить ещё upc13bah.zip (175k) - документацию в HTML.

Расположение

Итак, создаем каталоги. Дерево может выглядеть, например, так:

f:\uupc- корневой каталог UUPC/Ext
f:\uupc\mail- служебный каталог для почты
f:\uupc\spool- служебный каталог для спулинга почты
f:\uupc\public- каталог для общих файлов (я его не использую, но должен быть)
f:\uupc\log- каталог log-файлов
f:\uupc\config- каталог файлов конфигурации
f:\uupc\doc- каталог документации
f:\uupc\boxes\...- каталоги для почты пользователей

Разворачиваем архивы upc13f*.zip в корневой каталог, а документацию - в каталог f:\uupc\doc.

Конфигурация

В архиве документации upc13bad.zip находятся примеры всех необходимых файлов конфигурации. Однако это документация к версии 1.13b, поэтому необходимо во всех файлах конфигурации поправить строки Version=1.13b на Version=1.13f (или 1.13e, как у меня). Настраиваем следующие файлы:
  1. Файл Config\UUPC.RC содержит основные сведения о системе (станции), домене, сервере провайдера, пути к каталогам и некоторые установки по умолчанию, и имеет следующий вид:
    
    # *--------------------------------------------*
    # * UUPC/Ext sample config by Thomas J. Dire   *
    # *--------------------------------------------*
    Version=1.13e
    NodeName=mynode
    Domain=my.domain.ru
    Mailserv=provider
    LocalDomain=my.domain.ru
    
    postmaster=dmitry
    # Yes, I am a postmaster :)
    
    InModem=ZyxeV32b
    # My modem
    
    options=promiscuousrelay nodisplaycopyright
    # I don't want to read that long copyright every time :)
    
    SpoolDir=f:\uupc\Spool
    LogDir=f:\uupc\Log
    MailDir=f:\uupc\Mail
    PubDir=f:\uupc\Public
    # *----------------------------------------------*
    # *  The follow global defaults are suggested    *
    # *----------------------------------------------*
    DOS.Editor=Edit %s
    OS2.Editor=E %s
    Win16.Editor=notepad %s
    Win32.Editor=notepad %s
    
    MailExt=SPB
    # *---------------- End of file -----------------*
    
  2. Файлы настроек пользователей типа config\.rc. На каждого пользователя системы необходимо завести такой файл. В комплекте документации дан пример такого файла под именем personal.rc. Как правило, нужно только скопировать doc\personal.rc как, например, config\dmitry.rc и поменять следующие строки:
    
    Mailbox=dmitry
    Name=Dmitry Tarasov
    Home=f:\uupc\boxes\dmitry
    
  3. В config.sys прописываем расположение uupc.rc и имя пользователя по умолчанию, а также вносим каталог f:\uupc в PATH:
    
    REM --------------- UUPC/Extended settings --------------
    SET UUPCSYSRC=f:\uupc\config\uupc.rc
    SET UUPCUSRRC=dmitry.RC
    
    При необходимости частой смены конфигурации можно делать те же установки во время запуска процессов UUPC прямо в *.cmd-файлах.
  4. Создаем файл Config\HOSTPATH, и указываем там путь, по которому ходит наша почта. Полная версия этого файла есть в каталоге DOC, нам же достаточно одной строчки:

    * myprovider

  5. Берём файл Doc\SYSTEMS, копируем его в каталог Config, и пристально рассматриваем. Нам нужна строка вида:

    myprovider Any ZyxeV32b 57600 322-223 vg ogin--ogin--ogin \pMyLogin\p sword:--sword:--sword: \pMyPassword\p

    Здесь написано, что нужно звонить провайдеру myprovider в любое время (Any), модемом ZyxelV32b (соответствующий файл ZyxelV32b.mdm нужно также скопировать в \Config), скорость порта 57600, телефон 322-223. Используем протокол vg (об этих буковках лучше спросить у провайдера), далее идет Login-последовательность по типу "принял послал принял послал" через пробел. В случае связи по tcp/ip нужно указать модем tcpip, и скопировать в каталог Сonfig файл Doc\tcpip.mdm.

  6. Как уже упоминалось, необходимо взять в каталоге DOC файлы *.mdm, соответствующие используемым модемам, и скопировать их в каталог Config. Далее нужно произвести настройку собственно модема - строку инициализации, Dial Prefiх и т.п.
  7. Файл Config\PERMISSN - конфигурация прав провайдеров на вашей системе. Он имеет вид:

    MACHINE=myprovider SENDFILES=yes REQUEST=yes COMMANDS=rmail:rbmail:rcbmail:rzbmail:rnews

  8. Файл Config\Passwd содержит пароли пользователей. Не удивляйтесь русским комментариям - я переходил на UUPC/Ext с настроенной провайдером досовской Черновской uupc :)
    
    #   Для каждого пользователя или системы выделяется одна строка.
    #   Поля разделяются двоеточиями и располагаются в следующем порядке:
    #
    #       идентификатор пользователя (ответ на приглашение login:)
    #       пароль (ответ на приглашение Password:)
    #       номер пользователя UNIX (не используется)
    #       номер группы пользователя UNIX (не используется)
    #       Настоящее имя; здесь должно быть имя системы, если интерпретатор
    #       						команд uucp
    #       Домашний каталог; по умолчанию каталог UUPC conf
    #       Интерпретатор, запускаемый, если прошёл login; по умолчанию
    #       это переменная окружения COMSPEC;
    
    #	Обязательная секция
    Postmaster:*:::Mail Administration::
    MAILER-DAEMON:*:::Deliver Status Daemon::
    uucp:*:::UUCP File Transfer::
    
    # Пользователей добавлять после этой строки...
    dmitry:MyPassword::pop3:Dmitry Tarasov:f:\uupc\boxes\dmitry:
    
    Обратите внимание на поле pop3 - оно означает, что данный пользователь будет забирать почту по протоколу pop3, а не читать её с помощью BMail :)

Вспомогательные файлы и запуск пакета

RBMAIL

Основная трудность, с которой я столкнулся - это прикручивание RBMAIL. Пакет UUPC/Ext в оригинале не умеет обрабатывать команды сервера провайдера RBMAIL, RCBMAIL, RZBMAIL - то есть не умеет распаковывать почту. Вот что написано по этому поводу в FAQ от Dmitry Zavalishin:

Q: Как к UUPC/Extended 1.12k rbmail пpикpутить?
A: (Boris Karnauch, 2:5020/532)

  1. Hадо описать в PERMISSIONS для своего хоста как pазpешенные команды rbmail, rcbmail, rzbmail.
  2. Hадо взять gzip/2. Он доступен на многих BBS, где есть пpогpаммы для OS2.
  3. Hадо взять rbmail.exe by dz. Впpочем, лучше взять rbmail.c попpавить там одно место (пpи вызове spawvn() нулевым паpаметpом в списке лучше все же ставить какую-то стpоку) и пеpесобpать.
  4. Hужно сделать два .cmd одного вида: gzip -d |rbmail
    .CMD будут называться... пpавильно, rcbmail.cmd и rzbmail.cmd.
  5. Все исполнимые файлы надо положить по пути.
Мне стоило немалых трудов найти rbmail.c -- вы можете взять его здесь: rbmail.zip (32k). Разверните архив в каталог \uupc - он у нас и так в путях.

Запуск пакета.

Прежде всего, нам нужно научить UUPC/Ext звонить к провайдеру, забирать и распаковывать почту. Это делает командный файл connect.cmd:


/* Бобикк, то есть REXX, конечно :) */
do forever
   '@UUCICO.exe -s myprovider -x1 >nul'
   if rc<>5 then leave
end
'@uuxqt -x4'
В данном случае прозвон идет в цикле, поскольку сам UUCICO.EXE делает только одну попытку дозвона, возвращая errorlevel 5 при неудаче. UUXQT занимается распаковкой почты. Опции типа -x4 задают степень отладки, то, что вы увидите на экране. Возможно, иногда придется ставить -x20, чтобы разобраться в какой-либо проблеме.

Имейте в виду - ползущих по экрану цветных червяков не будет :) Все, как в Unix - "на лицо ужасные, добрые внутри" :)

Прозвон к провайдеру можно поставить на шедулер, дабы почта принималась регулярно.

Кроме того, нам надо запустить на постоянную работу демонов pop3 и smtp. Я это делаю с помощью следующего командного файла в StartUp:


detach uusmtpd.exe
detach uupopd.exe
Вот, собственно, и всё. Осталось пробовать посылать/принимать почту с помощью почтовых программ-клиентов.

Известные проблемы и их решениe, а также некоторые фичи

  1. Если у вас после загрузки OS/2 демоны uupsmtpd и/или uupopd не запускаются, либо вылетают, то надо запускать их немного погодя. Похоже, это связано со стартом tcp/ip сервисов на вашей машине. В этом случае я рекомендую скрипт на Rexx:
    
    /* бобикк */
    
    Call RxFuncAdd 'SysSleep', 'RexxUtil', 'SysSleep'
    
    /* курим 3 минуты после старта системы */
    Call SysSleep 180
    
    '@f:'
    '@cd f:\uupc'
    
    Say Starting POP3 daemon...
    '@detach uupopd.exe'
    Say Starting SMTP daemon...
    '@detach uusmtpd.exe'
    
  2. Если UUPC/Ext коннектится к провайдеру нормально, но дальше ничего не делает, включите у UUCICO отладку -x20, и посмотрите, что происходит. Если последнее, что вы видите перед бездействием - M state=K, то причина кроется в описании провайдера в файле SYSTEMS. Здесь либо указан неверный логин или пароль (попробуйте зайти терминалом и убедитесь в этом; не забудьте, логин и пароль чувствительны к регистру!), либо неверные опции протокола. Выясните у провайдера, какие буковки должны описывать протокол (v,g,t и тому подобное).
  3. Как ранее упоминалось, UUPC/Extended умеет работать через tcp/ip. Это очень удобно, особенно если ваш провайдер поддерживает UUPC-логин как с модемного соединения, так и по tcp/ip. У меня, к примеру, забор почты производится напрямик по модему либо по tcp/ip, в зависимости от наличия загруженного InJoy. Выбор способов прозвона производится в REXX-скриптах. Желающие узнать об этом подробнее могут написать мне.
  4. Не так давно мне пришлось менять провайдера. При этом нужно было, чтобы несколько месяцев почта принималась с обоих адресов. Оказалось, именно UUPC/Ext легко справляется с этой проблемой, прич`м в одной конфигурации. Естественно, необходимо прописать обоих провайдеров в файлах PERMISSN и SYSTEMS, а также организовать на них прозвон. В файле UUPC.RC целесообразно сразу указать нового провайдера. Теперь самое интересное: в файле HOSTPATH пишем
    
    * NewProvider
    # Вся почта отправляется через нового провайдера
    
    my.old.domain.ru = my.new.domain.ru
    # В нашей локальной сетке старый домен равен новому
    
    Поскольку клиенты передают на наш POP3/SMTP сервер только имя, они будут получать почту с обоих провайдеров одинаково, а отправлять через нового.
Ну вот, вроде и всё :)
По всем вопросам можно обращаться к авторам UUPC/Extended на www.kew.com (почти шутка :), ну и ко мне, конечно.

Thomas J. Dire (Dmitry Tarasov)
Fido: 2:5020/1873.13
IRC Nick: tom_dire


В Kendra UUPC есть махонькая такая дырка, позволяющая кому угодно пользоваться её SMTPD в качестве релея (кстати, подобная проблема есть и в обычном sendmail). Cпособ решения проблемы состоит в том, чтоб закрыть 25-й порт на внешнем (secure) интерфейсе фаерволом. В результате вы просто исключаете возможность внешнего использования вашего SMTP.
Правило для добавления в fwfiltrs.cnf:

deny 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 all eq 25 any 0 secure local both

В противном случае кто угодно сможет пользоваться вашим SMTP для ОТСЫЛКИ своей корреспонденции ...

Vladislav V. Gorodynko
IRC Nick: VladG


Интересные ссылки: Право закон правовой закон.
Комментариев к странице: 0 | Добавить комментарий
Домой | Проект ядро Core/2 | Проект OS/4 Download | Новости | Гостевая книга | Подробно обо всем | Нужные программы | Проекты | OS/2 FAQ | Всячина | За и Против | Металлолом | #OS2Russian | RDM/2 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ