Короткий посібник з настроювання uucp пошти під Unix., Unix, Операційні системи, статті

Victor Sudakov

UUCP (Unix to Unix copy) призначений для копіювання файлів між машинами і для виконання команд на віддаленій машині. Його використання для передачі пошти – Тільки одне з можливих застосувань.

Hастоящее керівництво орієнтоване на FreeBSD і Taylor UUCP, в інших системах все може бути зовсім по-іншому 🙂

Уявімо собі, що ви є вузлом, який обмінюється поштою з зовнішнім світом через хост mail.provider.ru і роздає пошту ще трьом хостам: host1.your.domain.org, host2.your.domain.org, host3.your.domain.org. Весь обмін поштою відбувається по uucp. При цьому host1.your.domain.org, host2.your.domain.org, host3.your.domain.org дзвонять вам, а ви телефонуєте
mail.provider.ru.

Будемо вважати, що чотири машини, з якими вам належить налагодити обмін поштою по uucp, мають наступні uucp-імена: provider, host1, host2 і host3 відповідно. Взагалі доменне ім’я системи (hostname) і uucp-ім’я цієї ж самої системи зовсім не зобов’язані збігатися. Hаприклад, host2.your.domain.org цілком міг би мати uucp-ім’я foo або bar. Якщо ми тут і вибрали збігаються імена, це було зроблено тільки для зручності викладу.

Нехай ваше власне доменне ім’я буде yourhost.your.domain.org, а ваше uucp-ім’я буде yourhost.

Hастройка uucp пошти в Unix увазі наступні кроки:

  • настройка власне uucp;

  • настройка sendmail;

  • різне.



    1. Hастройка власне uucp

  • Щоб налаштувати uucp, треба налаштувати його конфіги. Ось вони:

    total 12 drwxrwx — 3 uucp uucp 512 15 листопада 16:23. / drwxr-xr-x 10 root wheel 2048 30 грудня 21:44 .. / -R – r —– 1 uucp uucp 61 23 січня 1997 call -R – r —– 1 uucp uucp 260 8 квітня 1997 config -Rw-r —– 1 uucp uucp 250 3 вересня 20:51 dial -R – r —– 1 uucp uucp 1 25 серпня 1996 dialcode -R – r —– 1 uucp uucp 14 21 квітня 1997 passwd -R – r —– 1 uucp uucp 96 29 травня 1997 port drwxr-xr-x 2 root uucp 512 15 листопада 12:08 samples / -R – r —– 1 uucp uucp 160 28 травня 1997 sysin -R – r —– 1 uucp uucp 366 16 листопада 16:06 sysout

    1.1 call

    У цьому файлі описується ваш логін і пароль для прозвонки на інші uucp-машини. Природно, логін і пароль треба отримати від адміністратора тієї машини, на яку ви зібралися дзвонити. У нашому випадку він буде виглядати приблизно так:

    ======= call  ======
    # system login password
    provider uuyourhost Your_Secret_Password
    ======= call ======

    1.2 config

    У цьому файлі описуються різні параметри uucp, в основному шляху та імена файлів, тут майже нічого не треба міняти. В основному цей файл потрібний, якщо потрібно перевизначити деякі умовчання, які були задані при компіляції.

    ======= config  ======
    nodename yourhost # тут треба вказати ваше власне uucp-ім’я
    spool /var/spool/uucp
    pubdir /var/spool/uucppublic
    logfile /var/spool/uucp/Log
    statfile /var/spool/uucp/Stats
    debugfile /var/spool/uucp/Debug sysfile sysin sysout # імена файлів з описами систем – ваших лінків
    portfile port
    dialfile dial
    dialcodefile dialcode
    callfile call
    passwdfile passwd # Кількість одночасно виконуваних процесів розкладки пошти
    max-uuxqts 1
    ======= config ======

    Останній параметр підказав мені Igor Nikolaev (2:5030 / 266 @ fidonet). Це дійсно більш гарне рішення проблеми, від якої я позбавився тільки перезбирання rmail з прапором-DQUEUE_ONLY. А проблема ось яка: при отриманні великої кількості пошти запускається відразу купа sendmail’ов, і це виходить дуже накладно для ресурсів.

    1.3 dial

    Це файл з описами модемів. Беру його без змін з своєї системи, imho тут і так все зрозуміло. Корисно також подивитися man chat і керівництво до свого власного модему.

    ======= dial  ======
    dialer idc # довільне ім’я модему, під яким він буде відомий uucp
    dialtone w
    pause ,
    #chat “” ATZ\r\d\c OK ATM0DPW\T CONNECT \p\c
    chat “” ATZ\r\d\c OK ATM0DT\T CONNECT \p\c
    chat-fail BUSY
    chat-fail ERROR
    chat-fail NO\sDIALTONE
    chat-fail NO\sCARRIER
    #complete \d\d+++\d\dATH\r\c
    #abort \d\d+++\d\dATH\r\c
    ======= dial ======

    Зверніть увагу, що останні два рядки закомментарени. Якщо модем вміє сам класти трубку після закінчення з’єднання або по опусканню DTR, вони не потрібні. Якщо їх залишити, шкоди вони не принесуть, просто uucp буде в логах лаятися. Ще хочу зауважити – описів модемів може бути скільки завгодно, природно, під різними іменами.

    1.4 dialcode

    Служить для хитрого набору номера і imho взагалі не потрібен. У мене має нульову довжину.

    1.5 passwd

    У цьому файлі містяться логін і відповідний йому пароль для тих систем, які будуть дзвонити вам. ‘Uucico-l’ само вміє авторизувати подзвонили користувачів, пропонуючи їм при цьому ввести логін і пароль, і перевіряє вірність пароля з цього файлу. Які логіни і паролі ви дасте своїм даунлинков – справа ваша. Врахуйте тільки, що зручніше і правильніше дати їм логіни, які починаються однаково, наприклад, з двох букв uu. Чому це так – поясниться пізніше. Приклад:

    ======= passwd  ======
    uuhost1 Top_Secret_Password
    uuhost2 Smart_Password
    uuhost3 Stupid_Password
    ======= passwd ======

    1.6 port

    У цьому файлі міститься опис портів. Портів може бути багато. Кожен порт має своє ім’я, яке і використовується в подальшому в файлах з описами систем – ваших лінків. Imho тут все зрозуміло. Hабор параметрів не обмежується наведеним нижче прикладом, якщо треба зробити що-небудь особливо хитре – читайте опис до Taylor UUCP.

    ======= port  ======
    port port1 # ім’я порту
    type modem
    device /dev/cuaa1
    dialer idc
    speed 38400
    port port2 # теж ім’я порту
    type tcp
    service 540
    ======= port ======

    1.7 sysin

    Це файл з описами систем, які будуть дзвонити вам.

    ======= sysin  ======
    call-login *
    call-password *
    local-send /
    local-receive / port port1 # це, як ви пам’ятаєте, у нас модемний порт
    chat-timeout 90 protocol g # можливо, ви захочете використовувати який-небудь інший протокол time never # дзвонять тільки вони, ви їм ніколи не дзвоніть
    debug 1
    system host1 myname yourhost # як ви ввійшли в систему host1, коли вона подзвонить
    called-login uuhost1
    system host2
    myname yourhost
    called-login uuhost2
    system host3
    myname yourhost
    called-login uuhost3
    ======= sysin ======

    Навіщо потрібні перші чотири рядки і строчка called-login – не питайте. Hе пам’ятаю, але так треба. У документації описано, кому сильно цікаво – вперед.

    1.8 sysout

    У цьому файлі зручно прописати ті системи, на які ви самі збираєтеся дзвонити. В даному випадку у нас тільки одна така система – ваш провайдер.

    ======= sysout  ======
    call-login *
    call-password *
    local-send /
    local-receive /
    port port1
    chat-timeout 90
    protocol g time any # дзвонити в будь-який час. А взагалі час можна задавати дуже гнучко.
    debug 1
    system provider chat ogin: \ L word: \ P # береться з файлу call
    phone 111111 alternate # так робиться перебір номерів
    phone 222222
    alternate
    phone 333333
    ======= sysout ======

    Коректність налаштування всіх конфіги можна перевірити, запустивши uuchk. Залишилася ще зовсім небагато. Щоб періодично дзвонити своєму провайдеру за поштою, вставте рядок у ваш / etc / crontab, типу:

    0 * * * * uucp /usr/libexec/uucp/uucico -S provider
    Як приймати вхідні дзвінки по uucp, описано в пункті 3.1


    2. Hастройка sendmail

    2.1 Hастройка sendmail.cf

    Hеобходимо створити новий sendmail.cf, який буде знати про uucp. Для його створення можна взяти приблизно ось такий файл-прототип:

    ====== uucp.mc =========
    divert(-1)
    include(`../m4/cf.m4′)
    VERSIONID(`@(#)uucp.mc 1.01′)
    OSTYPE(bsd4.4)dnl
    MAILER(local)dnl
    MAILER(smtp)dnl
    MAILER(uucp)dnl
    FEATURE(nodns)dnl
    FEATURE(nocanonify)dnl
    FEATURE(mailertable)dnl
    FEATURE(uucpdomain)dnl
    define(`SMART_HOST’, `uucp-dom:provider’)dnl
    define(`confCOPY_ERRORS_TO’, `postmaster’)dnl
    ====== uucp.mc =========

    Після чого

    m4 uucp.mc > /etc/sendmail.cf

    Зверніть увагу, що MAILER (smtp) прибирати не можна, навіть якщо ніякого smtp не передбачається. Він все одно потрібен для того, щоб працював мейлер uucp-dom. Це мейлер, який знає про доменну форму імен – вам же не хочеться, щоб адреси в листах були в форматі uucp (через знаки оклику).

    2.2 Hастройка mailertable

    Маршрутизація uucp пошти відбувається згідно правилам, описаним в mailertable. Інакше й не можна – адже uucp нічого не знає про DNS (хоча мейлер uucp-dom і знає про імена машин в доменній формі). В найпростішому випадку, щоб просто заливати пошту своєму провайдеру, досить буде mailertable в такому форматі:

    ======= /etc/mailertable ======
    . uucp-dom:provider
    ======= /etc/mailertable ======

    Де provider – це uucp-ім’я системи провайдера (система повинна бути описана в / etc / uucp / sysout) Точка тут виступає в ролі символу підстановки і означає те ж саме, що у нормальних людей означає зірочка, тобто будь кількість будь-яких символів. Якщо ви не є оконечной системою, тобто роздаєте пошту комусь ще по uucp, то ваш mailertable може виглядати так:

    ======= /etc/mailertable ======
    .host1.your.domain.org uucp-dom:host1
    host1.your.domain.org uucp-dom:host1
    .host2.your.domain.org uucp-dom:host2
    host2.your.domain.org uucp-dom:host2
    .host3.your.domain.org uucp-dom:host3
    host3.your.domain.org uucp-dom:host3
    . uucp-dom:provider
    ======= /etc/mailertable ======

    Одиночна точка в кінці означає – все інше звалювати на провайдера, він сам розбереться. Зрозуміло, мова в mailertable йде тільки про імена машин. Про користувачів він нічого не знає. Тобто, записи

    host1.your.domain.org uucp-dom:host1
    .host1.your.domain.org uucp-dom:host1

    означають тільки те, що пошта для машин


    host1.your.domain.org
    foo.host1.your.domain.org
    bar.host1.your.domain.org
    foo.bar.host1.your.domain.org

    і т.п. буде направлятися через uucp-систему host1. Залишилося тільки додати, що sendmail використовує mailertable у вигляді database map, тому залишилося виконати наступне:


    makemap hash /etc/mailertable.db < mailertable

    2.3 Hастройка uudomain

    Як уже зазначалося раніше, доменне ім’я системи (Hostname) і uucp-ім’я цієї ж самої системи зовсім не зобов’язані збігатися. Тому у файлі uudomain настроюється відповідність доменного імені хоста і його uucp-імені. У цьому файлі повинні бути описані всі системи, з якими у вас є прямі лінки по uucp. Користуючись нашим прикладом, ваш uudomain буде виглядати приблизно так:

    ======= /etc/uudomain ======
    host1 host1.your.domain.org
    host2 host2.your.domain.org
    host3 host3.your.domain.org
    provider mail.provider.ru
    ======= /etc/uudomain ======

    uudomain, так само як і mailertable, повинен бути у вигляді database map, тому

    makemap hash /etc/uudomain.db < uudomain

    Тепер залишилося тільки


    kill -1 `cat /var/run/sendmail.pid`


    3. Різне

    3.1 Hастройка uucp-сервера.

    Передбачається, що ваша машина є поштовим сервером, на який ваші клієнти (host1.your.domain.org, host2.your.domain.org, host3.your.domain.org) будуть ходити за поштою. Ходити за поштою вони можуть по телефону або по IP. Бути сервером uucp дуже просто – коли клієнт подзвонить модемом або зайде на 540 порт, йому треба підсунути uucico в Як shell. Краще підсовувати uucico з ключем-l, тоді воно буде саме запитувати пароль, а брати паролі буде з власного файлу з паролями (/ Etc / uucp / passwd). Як це зробити – існує ряд способів.

    3.1.1 UUCP over IP

    Якщо ваша машина буде віддавати пошту по uucp over IP, то треба закомментаріть в / etc / inetd.conf стандартну рядок, що відноситься до uucpd, і додати свою:

    uucpd stream tcp nowait root /usr/libexec/uucp/uucico uucico -l

    Hе знаю, чому за замовчуванням там стоїть непрацююча строчка, але подейкують, що коштує вона там в розрахунку на те, що буде використовуватися не Taylor, а якась інша реалізація UUCP.

    3.1.2 mgetty

    Якщо клієнти будуть дзвонити по телефону, найпростіше поставити mgetty, яка вміє за стандартними іменами користувачів запускати їм в якості shell різні програмки. Hаприклад, ось така строчка в
    /usr/local/etc/mgetty+sendfax/login.config

    uu* uucp @ /usr/lib/uucp/uucico -l -u @

    означає, що для всіх користувачів, що починаються на uu, mgetty буде запускати uucico замість / usr / bin / login. Чим гарний такий варіант – в Зокрема тим, що не треба прописувати uucp-клієнтів в / etc / passwd. Тобто uucico з ключем-l буде брати пароль зі свого файлу / etc / uucp / passwd

    3.1.3 /etc/passwd

    Цей варіант я особисто не пробував, але повинен працювати. Кожного uucp-клієнта треба буде прописати в / etc / passwd, при цьому його строчка буде виглядати приблизно так:

    uuhost1:*:66:66::0:0:host1 uucp
    system:/var/spool/uucppublic:/usr/libexec/uucp/uucico

    В цьому випадку для авторизації подзвонив буде використовуватися не / Etc / uucp / passwd, а стандартний механізм авторизації користувачів через / Etc / passwd. Як підказує Sergey Zimin: “У всіх користувачів uid та gid повинен бути однаковим і збігатися з uid / gid псевдо-користувача “uucp”, який також повинен бути обов’язково в системі! Це потрібно і для правильної роботи і для секьюрной – (забув конкретно де, але один недбайливий адмін давав всім різні uid, як стандартним користувачам і його зламали по ftp) а наприклад в разі uucp-користувача його uid прописаний в / etc / ftpusers як той, кому не можна ломитися по ftp “.

    Схожі статті:


    Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

    Коментарів поки що немає.

    Ваш отзыв

    Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

    *

    *