ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Програмне забезпечення поштового обміну
         

     

    Інформатика, програмування
    Програмне забезпечення поштового обміну

    Згідно зі схемою поштового обміну (малюнок 2.1) взаємодія між учасниками цього обміну будується за класичною схемою "клієнт-сервер". При цьому схему можна розділити на кілька етапів. Перший - взаємодія по протоколу SMTP між поштовим клієнтом (Internet Mail, Netscape Messager, Eudora тощо) та поштовим транспортним агентом (sendmail, smail, ntmail тощо), другий - взаємодія між транспортними агентами в процесі доставки пошти одержувачу, результатом якого є доставка поштового повідомлення в поштову скриньку користувача і третій - вибірка повідомлення з поштової скриньки користувача поштовим клієнтом в поштову скриньку користувача на машині користувача по протоколу POP3 або IMAP Програма Sendmail

    Основним засобом розсилки пошти в Internet є програма sendmail . Вона забезпечує роботу модульної системи розсилки, яка призначена для отримання і відправлення кореспонденції, а також управління програмами підготовки і перегляду листів. Sendmail дозволяє організувати поштову службу локальної мережі та обмінюватися поштою з іншими серверами поштових служб через спеціальні шлюзи. Sendmail може бути налаштована для роботи з різними поштовими протоколами. Звичайно це протоколи UUCP (Unix-Unix-CoPy) і SMTP (Simple Mail Transfer Protocol).

    Sendmail працює як "відділення зв'язку" звичайної поштової служби, яка приймає і пересилає поштові повідомлення. Sendmail може інтерпретувати два типи поштових адрес:  поштові адреси SMTP;  поштові адреси UUCP.

    Перші є стандартними адресами Internet і, фактично, є стандартом де-факто. Саме ця адреса зазвичай зазначений на візитних картках.

    Sendmail можна налаштувати для підтримки:  списку адрес-синонімів;  списку адрес розсилки користувача;  автоматичної розсилки пошти через шлюзи;  черг повідомлень для повторної розсилки пошти у разі відмов      при розсилці;  роботи в якості SMTP-сервера;  доступу до адрес машин через сервер доменних імен BIND;  доступу до зовнішніх серверів імен.

    Принцип роботи програми sendmail

    Sendmail відправляє пошту в два прийоми: спочатку поштові повідомлення збираються у черзі, а потім відсилаються.

    Кожне повідомлення складається з трьох частин: конверта, заголовка і тіла повідомлення.

    Конверт . Конверт складається з адреси відправника, адреса одержувача та інформації розсилки, яка використовується програмами підготовки, розсилки та отримання пошти. Конверт залишається невидимим для відправника та одержувача поштового повідомлення.

    Заголовок . Заголовок складається з стандартних текстових рядків, які містять адреси, інформацію про розсилку і дані. Заголовок може бути частиною підготовленого користувачем текстового файлу, а може бути підготовлений і доданий до тіла повідомлення програмою підготовки пошти. Дані із заголовка можуть бути використані для оформлення конверта повідомлення.

    Тіло повідомлення. Перша порожній рядок у файлі поштового повідомлення відокремлює заголовок від тіла повідомлення. Все, що треба після цього рядка, називається тілом повідомлення і передається поштою без змін.

    Sendmail може бути викликана:  програмою підготовки повідомлень для відправки вже підготовлених      повідомлень;  програмою отримання пошти для пересилання отриманої з мережі пошти;        безпосередньо користувачем для відправки поштою файлу або      короткого повідомлення;  поштовим демоном, яким зазвичай є сама sendmail.

    Після того, як пошта зібрана, починається її розсилання. При цьому виконуються наступні дії:  адреси відправника та одержувача перетворюються у формат      мережі-одержувача пошти;  якщо необхідно, то в заголовок повідомлення додаються рядки,      дозволяють одержувачу відповідати на прийняте повідомлення (наприклад: FROM:      );  пошта передається однієї з програм розсилки пошти.

    На малюнку 3.1 представлена схема функціонування поштового сервера на базі програми sendmail.

    Коли програма прийому пошти отримує повідомлення, вона передає його програмі sendmail для подальшої розсилки. Якщо повідомлення досягло машини адресата, то воно відправляється програмою місцевої розсилки в поштову скриньку користувача.

    Перший етап розсилки - збір повідомлень. Sendmail одержує поштові повідомлення з трьох джерел:  командного рядка або стандартного вводу;  через SMTP-протокол (з мережі);  з черги повідомлень.

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

    При отриманні повідомлень по протоколу SMTP, sendmail використовується як програма клієнта і сервера протоколу. Протокол визначений в RFC-821 і є основним для розсилки пошти в Internet. У цьому випадку sendmail запускається як демон, який "слухає" порт TCP і в разі отримання повідомлення встановлює з'єднання з віддаленим клієнтом SMTP. Як правило, таким клієнтом є інша програма sendmail.

    Програма підготовки пошти на локальній машині також може використовувати SMTP. Для цього sendmail відкриває канал (pipe) обміну.

    При отриманні повідомлень з черги використовуються тимчасові файли черг. Ці черги використовуються для зберігання неразосланних повідомлень. Повідомлення зберігається в двох файлах. В одному файлі зберігається тіло повідомлення, а в іншому конверт і заголовок повідомлення. Зазвичай sendmail опитує черзі через певні адміністратором поштового сервера проміжки часу, на предмет наявності в них неразосланних повідомлень.

    Рис. 3.1. Схема поштового взаємодії на базі програми Sendmail

    Друга стадія розсилки пошти - розсилка повідомлень.

    Як тільки одним з описаних вище способів sendmail отримала повідомлення, робиться спроба його відправити за адресою. Для цього sendmail визначає три параметри: програму розсилки, вузол мережі і одержувача. Ця процедура проводиться за правилами, які містяться у файлі конфігурації. Sendmail зберігає одну копію тіла повідомлення у тимчасовому файлі, а заголовок завантажує в оперативну пам'ять. Для кожного повідомлення програма доставки (розсилки) повідомлень викликається окремо. Якщо повідомлення має бути доставлено на різні машини, то для кожної з машин також викликається своя програма доставки. Деякі програми можуть обслуговувати відразу декілька абонентів однієї машини, якщо це неможливо, то для кожного абонента викликається також своя програма доставки. Розглядають два типи розсилки: на віддалену машину і місцеву розсилку.

    Розсилка на віддалену машину . Для виклику програми розсилки sendmail відкриває pipe і запускає програму розсилки, командний рядок якої знаходиться у файлі конфігурації. Sendmail записує заголовок і тіло повідомлення в pipe. Якщо програма розсилки не використовує протокол SMTP, то адреса одержувача передається через pipe. Якщо використовується SMTP, то відкривається двонаправлений канал для інтерактивного взаємодії з віддаленим сервером SMTP. Якщо в якості транспортного протоколу використовується TCP, то sendmail не запускає зовнішню програму розсилки, а сама ініціює TCP-з'єднання з віддаленим сервером SMTP.

    Доставка місцевої пошти . Якщо sendmail визначає, що адреси доставки місцеві, то відбувається звертання до файлу адресних синонімів і виробляється перетворення адрес (розширення). Файл адресних синонімів можна використовувати для перенаправлення пошти у файли або для обробки місцевими програмами. Користувач може мати і свій власний файл адресних синонімів для керування розсилкою персональної пошти. Після перетворення адрес пошта відправляється програмі місцевої розсилки (наприклад rmail).

    Важливим моментом при роботі sendmail є алгоритм визначення типу адрес. При використанні стандартного файлу конфігурації застосовуються наступні правила: пошта розсилається відповідно до формату адреси одержувача, адреси при цьому бувають місцеві, UUCP і SMTP.

    Місцеві адреси мають вигляд: user user @ localhost [email protected] user @ alias [email protected] user @ [local.host.internet.address] localhost! user localhost! localhost! user [email protected]

    Місцевий адреса - це адреса, який розпізнається як адреса машини, з якої здійснюється відправка пошти.

    Адреса UUCP мають вигляд: host! user host! host! user [email protected]

    Якщо машина, з якої відправляється пошта, має пряму лінію зв'язку за протоколом UUCP з наступною машиною (в адресі), то пошта передається на цю машину, якщо такого з'єднання немає, то пошта не розсилається і видається повідомлення про помилку. Файл конфігурації повинен містити детальний опис маршрутів для пересилання повідомлень на машини по протоколу UUCP.

    Адреса SMTP - це адреси, описані в стандарті RFC-822 або стандартні адреси Internet. Ці адреси мають вигляд: usr @ host [email protected] user @ [remote.host `s.internet.address]

    Пошта з адресами SMTP розсилається по протоколу SMTP.

    Якщо в системі для адресації використовується Berkeley Internet Name Domain (BIND) сервер, то sendmail може визначати адреси одержувачів, використовуючи сервіс BIND. Якщо BIND не використовується, то sendmail сама визначає адреси.

    При розсилці пошти можна використовувати і змішану адресацію: user% hostA @ hostB - пошта відправляється з машини hostB на машину hostA user! hostA @ hostB - пошта відправляється з машини hostB на машину hostA hostA! user% hostB - пошта відправляється з hostA на hostB

    Підбиваючи підсумок обговорення принципів роботи sendmail, варто спеціально підкреслити той факт, що пошта реально розсилається двома принципово різними способами. При використанні протоколу UUCP пошта розсилається за принципом "stop-go", тобто повідомлення передаються від машини до машини за вказаною в адресі шляху. Слід чітко уявляти, якщо пошта пішла з машини відправника, то це не означає, що вона надійде адресату. Проміжна машина може повернути пошту тому, якщо не зможе розіслати. Електронна пошта дійсно працює як система звичайної пошти, фізично переміщаючи і зберігаючи повідомлення на проміжних поштових станціях. При роботі за протоколом SMTP пошта реально відправляється тільки тоді, коли встановлено інтерактивне з'єднання з програмою-сервером на машині-одержувача пошти. При цьому відбувається обмін командами між клієнтом і сервером протоколу SMTP в режимі on-line. При змішаної адресації доставка пошти відбувається за змішаним сценарієм. Як йшла доставка і як маршрутизувати повідомлення можна визначити з заголовка повідомлення, яке прийняли ви.

    Аналіз типу адрес в програмі sendmail - це найголовніший процес, тому що за типом адреси одержувача sendmail визначає яким способом повідомлення буде розіслане. Виклик програми доставки вмонтований в правила перетворення адрес відправника та одержувача. При цьому як тільки система вирішить, що подальше перетворення адреси недоцільно, так відразу викликається програма доставки. Найбільше число повідомлень про помилки при розсилці повідомлень пов'язано як раз з визначенням адреси одержувача. У цьому процесі беруть участь, принаймні, два сервіси Internet: система розсилки електронні листи, і служба доменних імен. Sendmail постійно звертається до служби доменних імен на предмет канонізації імен електронної пошти звіряє ці імена з тими, які закріплені за комп'ютером, на якому дана система встановлена. Якщо імена співпадають, то здійснюється місцева розсилка по адресами місцевої пошти. Налаштування програми sendmail

    Налаштування програми sendmail відбувається за допомогою файлу/etc/sendmail/conf. Цей файл можна розбити на кілька частин:   Опис особливостей даної машини (local information) - в даній секції описуються такі параметри,      як ім'я даної машини, ім'я UUCP і т.п.   Опис макроозначень sendmail , що відповідають за роботу в локальній мережі, наприклад,      ім'я домену та "офіційне ім'я" машини.   Опис класів , тобто      груп імен, які використовуються програмою для розсилки пошти. Наприклад,      для розсилки в інші поштові служби.   Номер версії файлу конфігурації . Ця мінлива повинна змінюватися кожного разу, як тільки в      файл конфігурації вносяться будь-які зміни.   Внутрішні макровизначеннями sendmail . У даному розділі присвоюються значення      змінним, які sendmail використовує при взаємодії з іншими      транспортними агентами.   Опції команди sendmail .      Опції визначають режими роботи програми. Опції можна задавати у вигляді      параметрів командного рядка, а можна у вигляді описаний в файлі.   Визначення порядку повідомлень програми sendmail (Precedence). Звичайно ця секція не модифікується      адміністратором.   Довірені користувачі .      У даній секції описуються користувачі, яким дозволено переписувати      адреси відправників, тобто виступати не під тією адресою, що за ними      закріплений.   Опис формату заголовка поштового повідомлення . У даній секції визначаються поля та їх формат,      які відображаються в заголовку. У багатьох полях заголовка sendmail      генерує на основі інформації з конверта поштового повідомлення.   Правила перетворення адрес . Це найбільша частина файла конфігурації програми sendmail.      Перетворення адрес необхідно для прийняття програмою рішень про шляхи      розсилки, тому що це рішення приймається на основі      отриманого в результаті перетворень поштової адреси.   Опис програм розсилки .      У даній секції описуються імена програм розсилки, шляхи і параметри      командного рядка цих програм. Зазвичай це програма місцевої розсилки,      розсилка по UUCP, розсилка по SMTP, розсилка на виконання.   для спільного використання правил перетворення адрес , який не змінюється від машини до машини і від      конфігурації до конфігурації (Rule Set 0).   Машинно-залежна частина загального правила перетворення адрес . У даній секції зміст визначається      способом розсилки пошти. Наприклад, ця секція при розсилці по SMTP      відрізнятиметься від випадку розсилки по UUCP.

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

    В цілому всі описані вище секції вирішують три основні завдання:  визначення оточення sendmail,  аналіз і перетворення адрес електронної пошти,  розсилка повідомлень за допомогою програм розсилки.

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

    Усі команди, які використовуються у файлі sendmail можна представити у вигляді такої таблиці:         Команда          Синтаксис          Призначення             Define Macro         Dxvalue         Встановити значення "x"             Define Class         Ссword1 word2 ...         Встановити значення класу "c"             Define Class         Fcfile         завантажити значення класу з файлу             Set Option         Oovalue         Встановити значення опції "o"             Trusted Users         Tuser1 user2 ...         Визначити довірених користувачів             Set Precedence         Pname = number         Для кімнати помилки number встановити ім'я name             Define Mailer         Mname, [field = value]         Визначити програму розсилки пошти             Define Header         H [? Mflag?] Name: format         Визначити формат поля заголовка             Set Rulset         Sn         Почати визначення набору правил перетворення адрес             Define Rule         Rlhs rhs comment         Визначити правило перетворення адреси     

    Формат команди файлу налаштувань sendmail не дуже зручний для читання. Загалом його можна визначити наступним чином:

    Рис. 3.2. Структура команди файлу налаштувань sendmail

    Тепер розберемо більш докладно деякі команди і секції файлу налаштувань sendmail. Найкраще це зробити на основі реального файлу. Почнемо з секції опису локальних параметрів: ################## # Local info # ################## Cwlocalhost CP. # UUCP relay host DYucbvax.Berkeley . EDU CPUUCP # BITNET relay host # DBmailhost.Berkeley.EDU DBrelay.kiae.su CPBITNET # "Smart" relay host (may be null) DSrelay.kiae.su # who I send unqualified names to (null means deliver locally) DR # who gets all local email traffic ($ R has precedence for unqualified names) DH # who I masquerade as (null for no masquerading) DM # class L: names that should be delivered locally, even if we have a relay # class E: names that should be exposed as from this host, even if we masquerade # CLroot CEroot # operators that cannot be in local usernames (ie, network indicators) CO @%! # a class with just dot (for identifying canonical names) C.. # dequoting map Kdequote dequote

    Як видно з цього лістингу, в даній секції описані ім'я даної машини (Cwlocalhost), а також клас машин-шлюзів в інші поштові системи (CP. ...). При цьому нарощування класу відбувається у міру опису шлюзу для кожного з видів поштових служб. В кінці секції описані символи, які не можуть використовуватися як імена користувачів або доменів.

    Наступна секція - визначення макросів sendmail: ###################### # Special macros # ###################### # SMTP initial login message De $ j Sendmail $ v/$ Z ready at $ b # UNIX initial From header format DlFrom $ g $ d # my name for error messages DnMAILER-DAEMON # delimiter (operator) characters Do .:%@!^/ [] # format of a total name Dq $? x $ x $ | $ g $. # Configuration version number DZ8.6.6

    У даній секції описані повідомлення, які видає sendmail при взаємодії з іншими транспортними агентами. Як видно з цього опису, визначення макросу це не тільки присвоювання значення, а й виконання певних дій. Найбільш цікава пропозиція з усіх - пропозиція, що визначає значення макросу q: Dq $? X $ x $ | $ g $.

    Тут описана умовна підстановка значення. Всі пропозицію можна описати наступною фразою:

    "Якщо значення змінної x встановлено, то: q = значеніе_x, інакше: q = значеніе_g".

    Те ж саме можна записати і по-іншому: if (x! = NULL) (strcpy (q, x); strcat (q, ""); (else (strcpy (q, g);)

    У даному випадку $? відповідає оператору if, $ | - else, а $. - Кінець умовного оператора.

    Наступна секція - це визначення опцій: ############### # Options # ############### # strip message body to 7 bits on input? # O7False # Insist that the BIND name server be running to resolve names OI # deliver MIME-encapsulated error messages? OjTrue

    В даному випадку приведений лише фрагмент цієї секції. Більшість параметрів загальні для всіх установок sendmail. Вказані ж у лістингу параметри є принциповими з точки зору режимів роботи sendmail. Перший параметр визначає той факт, що по пошті можна пересилати семібітовую інформацію. Згідно RFC-822 інформація повинна бути семібітовая, але для передачі кирилиці це означає використовувати кодування, що абсолютно не прийнятно. Тому даний параметр повинен бути закоментарен. У системах, де використовується сервер доменних імен, опція I (OI) повинна бути встановлена, щоб не було помилок при ідентифікації доменів. Останній параметр не є принциповим, але для цілей більш зрозумілого подання його слід встановити. Якщо поштова клієнт не підтримує MIME, то цей параметр закоментаріть.

    Наступні дві секції визначають рівень інформації про помилки та довірених користувачів: ########################### # Message precedence # ################### ######## Pfirst-class = 0 Pspecial-delivery = 100 Plist =- 30 Pbulk =- 60 Pjunk =- 100 #################### # # Trusted users # ##################### Troot Tdaemon Tuucp

    За цими двома секціями слід секція опису полів заголовка поштового повідомлення, який генерується програмою sendmail: ######################### # Format of headers # #################### ##### H? P? Return-Path: $ g HReceived: $? sfrom $ s $.$?_($? s $ | from $.$_) $. by $ j ($ v/$ Z ) $? r with $ r $. id $ i $? u for $ u $.; $ b H? D? Resent-Date: $ a H? D? Date: $ a H? F? Resent-From: $ q H? F? From: $ q H? x? Full-Name: $ x HSubject: # HPosted-Date: $ a # H? l? Received-Date: $ b H? M? Resent-Message-Id: H? M? Message-Id:

    Формат команд даної секції визначає які поля включаються в заголовок, а які не включаються. Дана секція тісно пов'язана з секцією визначення програм розсилки пошти. Якщо після H немає знаку питання, то поле включається в заголовок повідомлення для будь-якої програми розсилки, якщо після H символ "?" присутній, то в рядку аргументів програми розсилки даний прапор повинен бути визначений для того, щоб на цьому полі було включено в заголовок. Як випливає з наведеного вище опису, завжди включаються лише поля Received та Subject. Всі перераховані поля не є обов'язковими полями заголовка.

    Наступна секція - правила перетворення адрес. Але перш ніж обговорювати її зміст слід сказати як і коли sendmail ці адреси перетворює.

    Перш за все необхідно розглянути схему перетворення (малюнок 3.3).

    Рис. 3.3. Правила

    При отриманні повідомлення поштової адреси, вказані в полях To, From, Cc, перетворюються в відповідно до правил перетворення. ################################################## #################### ############################## ######################################## ##### ##### REWRITING RULES ##### ########################################### ########################### ####################### ############################################### # # # ######################################## # # # Rulset 3 - Name Canonicalization # # # ########################################### S3 # handle null input ( translate to special case) R $ @ $ @ # basic textual canonicalization - note RFC733 heuristic here R $*$*$* $ 2 $ 3 $ 5 strip multiple R $ * $ * $ 5 2-level nesting R $ * $ * $ @ MAIL FROM: case R $ * $ * $ 2 basic RFC821/822 parsing # handle list:; syntax as special case R $*:;$* $ @ $ 1:; # make sure syntax is easy to parse - undone later R @ $ +, $ + @ $ 1: $ 2 change all "," to ":" # localize and dispose of route-based addresses R @ $ +: $ + $ @ $> 96 <@ $ 1>: $ 2 handle # find focus for list syntax R $ +: $ *; @ $ + $ @ $> 96 $ 1: $ 2; <@ $ 3> list syntax R $ +: $ *; $ @ $ 1: $ 2; list syntax # find focus for @ syntax addresses R $ + @ $ + $: $ 1 <@ $ 2> focus on domain R $ + <$ + @ $ +> $ 1 $ 2 <@ $ 3> move gaze right R $ + <@ $ +> $ @ $> 96 $ 1 <@ $ 2 > already canonical # do some sanity checking R $ * <@ $ *: $ *> $ * $ 1 <@ $ 2 $ 3> $ 4 nix colons in addrs # convert old-style addresses to a domain-based address R $ -! $ + $ @ $> 96 $ 2 <@ $ 1. UUCP> resolve uucp names R $ +. $ -! $ + $ @ $> 96 $ 3 <@ $ 1. $ 2> domain uucps R $ +! $ + $ @ $> 96 $ 2 <@ $ 1. UUCP> uucp subdomains # if we have% signs, take the rightmost one R $ *% $ * $ 1 @ $ 2 First make them all @ s. R $ * @ $ * @ $ * $ 1% $ 2 @ $ 3 Undo all but the last. R $ * @ $ * $ @ $> 96 $ 1 <@ $ 2> Insert <> and finish # else we must be a local name ######## ######################################## # # # Ruleset 96 - bottom half of ruleset 3 # # # ############################################## # # # At this point, everything should be in a "local_partextra" format. S96 # handle special cases for local names R $ * <@ localhost> $ * $: $ 1 <@ $ j. > $ 2 no domain at all R $ * <@ localhost. $ m> $ * $: $ 1 <@ $ j. > $ 2 local domain R $ * <@ localhost. UUCP> $ * $: $ 1 <@ $ j. > $ 2. UUCP domain R $ * <@ [$ +]> $ * $: $ 1 <@ @ [$ 2]> $ 3 mark [abcd] R $ * <@ @ $ = w> $ * $: $ 1 <@ $ j. > $ 3 self-literal R $ * <@ @ $ +> $ * $ @ $ 1 <@ $ 2> $ 3 canon IP addr # pass UUCP addresses straight through R $ * <@ $ +. UUCP> $ * $ @ $ 1 <@ $ 2. UUCP. > $ 3 # pass to name server to make hostname canonical R $ * <@ $ * $ ~ P> $ * $: $ 1 <@ $ [$ 2 $ 3 $]> $ 4 # local host aliases and pseudo-domains are always canonical R $ * <@ $ = w> $ * $: $ 1 <@ $ 2. > $ 3 R $ * <@ $ * $ = P> $ * $: $ 1 <@ $ 2 $ 3. > $ 4 R $ * <@ $ *. . > $ * $ 1 <@ $ 2. > $ 3 # if this is the local hostname, make sure we treat is as canonical R $ * <@ $ j> $ * $: $ 1 <@ $ j. > $ 2 ################################################ # # # # # Ruleset 4 - Final Output Post-rewriting # # # ################################## ################ S4 R $ * $ @ $ 1 handle and list:; # strip trailing dot off possibly canonical name R $ * <@ $ +. > $ * $ 1 <@ $ 2> $ 3 # externalize local domain info R $ * <$ +> $ * $ 1 $ 2 $ 3 defocus R @ $ +: @ $ +: $ + @ $ 1, @ $ 2: $ 3 canonical R @ $ * $ @ @ $ 1 ... and exit # UUCP must always be presented in old form R $ + @ $ -. UUCP $ 2! $ 1 [email protected] => h! U # delete duplicate local names R $ +% $ = w @ $ = w $ 1 @ $ j u% host @ host => u @ host ###### ################################################## ###### # # # Ruleset 97 - recanonicalize and call ruleset zero # # # # # # (used for recursive calls) # # # ################## ############################################ S97 R $ * $: $> 3 $ 1 R $ * $ @ $> 0 $ 1 ##################################### # # # # Ruleset 0 - Parse Address # # # ###################################### S0 R $ # local $: special case error msgs R $ *: $ *; $ # error $ @ USAGE $: "list:; syntax illegal for recipient addresses" R $ # error $ @ USAGE $: "user address required" R $ # error $ @ USAGE $: "colon illegal in host name part" # handle numeric address spec R $ * <@ [$ +]> $ * $: $> 98 $ 1 <@ [$ 2]> $ 3 numeric internet spec R $ * <@ [$ +]> $ * $ # smtp $ @ [$ 2] $: $ 1 <@ [$ 2]> $ 3 still numeric: send # now delete the local info - note $ = O to find characters that cause forwarding R $ * <@> $ * $ @ $> 97 $ 1 user @ => user R <@ $ = w. >: $ * $ @ $> 97 $ 2 @ here: ... -> ... R $ * $ = O $ * <@ $ = w. > $ @ $> 97 $ 1 $ 2 $ 3 ... @ here -> ... # handle local hacks R $ * $: $> 98 $ 1 # short circuit local delivery so forwarded email works R $ + <@ $ = w. > $: $ 1 <@ $ 2. @ $ H> first try hub R $ + <$ + @ $ +> $ # local $: $ 1 yep .... R $ + <$ + @> $ # local $: @ $ 1 nope, local address # resolve remotely connected UUCP links (if any) # resolve fake top level domains by forwarding to other hosts R $ * $ * $: $> 95 <$ B> $ 1 $ 3 [email protected] # forward non-local UUCP traffic to our UUCP relay R $ * $ * $: $> 95 <$ Y> $ 1 $ 3 uucp mail # pass names that still have a host to a smarthost (if defined) R $ * <@ $ *> $ * $: $> 95 <$ S> $ 1 <@ $ 2> $ 3 glue on smarthost name # deal with other remote names R $ * <@ $ *> $ * $ # smtp $ @ $ 2 $: $ 1 <@ $ 2> $ 3 [email protected] # if this is quoted, strip the quotes and try again R $ + $: $ (dequote $ 1 $) strip quotes R $ + $ = O $ + $ @ $> 97 $ 1 $ 2 $ 3 try again # handle locally delivered names R $ = L $ # local $: @ $ 1 special local names R $ + $ # local $: $ 1 regular local names ############################# ############################################## # # # Ruleset 5 - special rewriting after aliases have been expanded # # # # # # (new sendmail only) # # # ########################### ################################################ S5 # see if we have a relay or a hub R $ + $: <$ R> $ 1 try relay R <> $ + $: <$ H> $ 1 try hub R <> $ + $ @ $ 1 nope, give up R <$ -: $ +> $ + $: $> 95 <$ 1: $ 2> $ 3 <@ $ 2> R <$ +> $ + $ @ $> 95 <$ 1> $ 2 <@ $ 1> ######## ################################################## ######### # # # Ruleset 95 - canonify mailer: host syntax to triple # # # ######################### ########################################## S95 R <> $ * $ @ $ 1 strip off null relay R <$ -: $ +> $ * $ # $ 1 $ @ $ 2 $: $ 3 try qualified mailer R <$ = w> $ * $ @ $ 2 delete local host R <$ +> $ * $ # relay $ @ $ 1 $: $ 2 use unqualified mailer ######################################## ########################### # # # Ruleset 98 - local part of ruleset zero (can be null) # # # # # # # ################################################## ############# S98

    За секцією перетворення адрес слід секція визначення програм розсилки пошти. У ній визначається локальна програма розсилки (mail), програма розсилки для виконання (sh) і програма розсилки по SMTP. ################################################## # # # Local and Program Mailer specification # # # ####################################### ########### Mlocal, P =/usr/libexec/mail.local, F = lsDFMrmn, S = 10, R = 20/40, A = mail-d $ u Mprog, P =/bin/sh, F = lsDFMeu, S = 10, R = 20/40, D = $ z: /, A = sh-c $ u S10 R $ n errors to mailer-daemon R $ + $: $> 40 $ 1 S20 R $ + <@ $ *> $: $ 1 strip host part S40 ################################## # # # # # # SMTP Mailer specification # # # ##################################### Msmtp , P = [IPC], F = mDFMuX, S = 11/31, R = 21, E = rn, L = 990, A = IPC $ h Mesmtp, P = [IPC], F = mDFMuXa, S = 11/31, R = 21, E = rn, L = 990, A = IPC $ h Mrelay, P = [IPC], F = mDFMuXa, S = 11/31, R = 61, E = rn, L = 2040, A = IPC $ h

    Потім йдуть правила визначення локального перетворення адрес для конкретних програм розсилки, зокрема набір правил S11. # Envelope sender and masquerading recipient rewriting # S11 R $ + $: $> 51 $ 1 sender/recipient common R $ *:; $ @ $ 1:; list:; special case R $ * $ @ $> 61 $ 1 qualify unqual'ed names

    У секції програм розсилки ми в нашому прикладі не вказали ще одну важливу можливість - розсилку по протоколу UUCP: Мuucp, P =/usr/bin/uux, F = DFMhuU, S = 13, R = 23, M = 100000, A = uux --r-z-a $ f-gC $ h! Rmail

    Природно, що правила перетворення адрес S13 і R23 повинні бути описані у файлі sendmail. Тестування обслуговування по протоколу SMTP

    Для перевірки сервісу SMTP застосовують програму telnet, запущена по порту 25: citmgu> telnet server.citmgu.ru 25

    У цьому випадку система відповідає рядком запрошення протоколу SMTP, після чого можна вводити команди SMTP і перевіряти реакцію системи на них: # Telnet citmgu.ru 25Trying 194.85.135.66 ... Connected to citmgu.ru.Escape character is'^]'. 220 cit-u.citmgu.ru ESMTP Sendmail 8.8.5/8.8.5; Mon, 30 Jun 1997 09 : 45:55 GMT help 214-This is Sendmail version 8.8.5 214-Topics: 214 - HELO EHLO MAIL RCPT DATA 214 - RSET NOOP QUIT HELP VRFY 214 - EXPN VERB ETRN DSN 214-For more info use "HELP". 214 -To report bugs in the implementation send email to 214 - [email protected]. 214-For local information send email to Postmaster at your site. 214 End of HELP info MAIL FROM: paul 250 paul ... Sender ok RCPT TO: paul 250 paul ... Recipient ok DATA 354 Enter mail, end with "." on a line by itself This is a test message. 250 JAA24836 Message accepted for delivery quit 221 cit-u.citmgu.ru closing connection Connection closed by foreign host. You have new mail. #

    У наведеному тут сеансі спочатку користувач видав команду help і отримав список команд, які можна використовувати при взаємодії з протоколу SMTP. Потім користувач видав команду MAIL FROM: для вказівки адреси відправника поштового повідомлення. Після цього видана команда RCPT TO: , і вказана адреса одержувача поштового повідомлення. Команда DATA відкриває можливість введення поштового повідомлення, тобто клієнт з режиму командного рядка переходить в режим редагування повідомлення. Редагувати можна тільки в межах одного рядка шляхом затирання символом забою попередньо набутих символів. Назад на рядок вище не можна. Кінець режиму редагування позначається символом "." в першій позиції рядка. Після цього клієнт повертається в інтерфейс командного рядка, а повідомлення надсилається. Цілком очевидно: що за один сеанс можна відправити кілька повідомлень як одному і того ж адресата, так і різним одержувачам на одному і тому ж комп'ютері. Посилати повідомлення можна через іншу машину, якщо в якості адреси одержувача вказати що-небудь подібне до наведеного нижче: paul% quest.polyn.kiae.su @ citmgu.ru

    У цьому випадку повідомлення відправляється на citmgu.ru, а потім воно буде переправлено на quest.polyn.kiae.su. Тестування по протоколу POP3

    ормально, взаємодія по протоколу POP3 можна розділити на дві фази: фазу аутентифікації і фазу обміну даними. У фазі аутентифікації користувялина повинен повідомити свій ідентифікатор та пароль. Якщо автентифікація була проведена успішно, то система дозволяє працювати з домашнім скринькою користувача. Сам протокол POP3 дуже схожий на SMTP з тією тільки різницею, що повідомлення можна приймати але не можна відправляти.

    Наведемо приклад взаємодії по протоколу POP3: quest> telnet quest.net.kiae.su Trying 144.206.130.138 ... Connected to quest.net.kiae.su. Escape character is'^]'. + OK QPOP (version 2.2) at quest.net.kiae.su starting. user paul + OK Password required for paul. pass Kukuru23432 + OK paul has 6 messages (12576 octets). stat + OK 6 12576 list + OK 6 messages (12576 octets) 1 1447 2 2640 3 2296 4 1100 5 3025 6 2068 . noop + OK last + OK 4 is the last read message. retr 4 + OK 1100 octets Received: from mail1.relcom.ru (mail1.relcom.ru [193.125.152.4]) by quest.net.kiae.su (8.7 .5/8.7.3) with ESMTP id CAA09628 for; Wed, 2 Jul 1997 02:51:43 +0400 (MSD) Received: from thevni (uucp @ localhost) by mail1.relcom.ru (8.7.5.R. ML.S/Relcom-2A) with UUCP id BAA03544 for paul; Wed, 2 Jul 1997 01:34:45 +0400 (MSD) Received: by Relay1.relcom.ru (UUMAIL/2.0); Wed, 2 Jul 97 01 : 34:44 +0300 Received: by theor.vniinm.msk.su (UUPC/@ v5.06gamma, 07Feb93); Wed, 2 Jul 1997 01:24:57 +0400 To: [email protected] References: Message - Id: Organization: AA Bochvar Institute for Inorganic Materials, Theoret From: "Alexander Z. Solontsov" Date: Wed, 2 Jul 97 01:24:56 +0400 X-Mailer: BML [MS/DOS Beauty Mail v.1.36] Subject: life Lines: 9 X-UIDL: 2313051b98ef908dceefe8b801d9e60d Status: RO To: NMSergeeva Dear HM, I am still alive, publishing a lot, and this year applied to RAN. Would be pleased to hear from you in a more derect way. Alexander. dele 4 + OK Message 4 has been deleted. rset 4-ERR Too many arguments for the rset command. rset + OK Maildrop has 6 messages (12576 octets) list + OK 6 messages (12576 octets) 1 1447 2 2640 3 2296 4 1100 5 3025 6 2068 . quit + OK Pop server at quest.net.kiae.su signing off. Connection closed by foreign host.

    У даному прикладі використовується все той же прийом доступу до сервера через програму Telnet по 110 порту TCP. На початку видаються команди фази аутентифікації і user pass. Потім видається команда stat, яка повідомляє статус поштової скриньки користувача paul. За командою list система повідомляє число повідомлень та їх розмір у байтах. За командою retr можна отримати текст повідомлення. За командою dele позначити повідомлення для видалення. Видаляються повідомлення тільки в момент закінчення сеансу, а під час сеансу вони тільки позначаються як вилучені, тому по команді rset ці позначки можна знято

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status