КОНТРОЛЬНА РОБОТА № 3
Розсилання пошти в мережЕВійопераційній системі FreeBSD
Метароботи
Одержатипрактичні навички у розсиланні пошти з використанням протоколуUUCP та команди MAIL у мережевій операційній системі FreeBSD4.2
Теоретичні положення
ПротоколUUCP (Unix to Unix copy) призначений для копіювання файлів між декількомамашинами в мережі, для виконання команд на віддаленій машині. Цей протоколтакож можна використати для розсилання пошти. Нехай одна з машин є вузлом, якаобмінюється поштою з користувачами поза організацією, де вона знаходиться черезголовну обчислювальну машину з адресою MAIL.PROVIDER.KIEV.UA, а також виконуєрозсилання пошти ще трьом машинам всередині організації, де вона знаходиться.Нехай імена цих машин будуть host1.your.domain.org,host2.your.domain.org іhost3.your.domain.org.
Нехай дляпростоти ім'я нашої машини буде MYHOST.YOUR.DOMAIN.ORG
Кожніймашині для проведення операції розсилання пошти необхідно присвоїти її власнеUUCP — ім’я. Воно не повинно співпадати з її справжнім іменем, але не зважаючина це, будемо вважати, що UUCP — імена наших машин — це MYHOST, HOST1, HOST2,HOST3 і PROVIDER
Обмінпоштою відбувається повністю через протокол UUCP, причому схема проходженнятака:
Нехайстрілка означає напрям дзвінка. Тоді
/>/>PROVIDER MYHOST HOST1 HOST2 HOST3
Настройкарозсилання пошти передбачає настройку самого протоколу UUCP і настройку службиSENDMAIL.
Розглянемо детально, як організованийпротокол UUCP, і які основні команди і daemon’и необхідні для повної йогореалізаціїUUCP — Unix to Unix copy
Синтаксискоманди — uucp [опції] вихідний_файл кінцевий_файл
Файл можебути записаний як СИСТЕМА! ШЛЯХ, де СИСТЕМА — це UUCP – ім’я даної машини. Післятого, як була дана команда, вона не виконується відразу, а записується взагальну чергу, а її виконання проводити daemon UUCICO при його звертанні досистеми. Причому це звертання відбувається відразу, якщо в опціях не буввказаний ключ -r або --nouucico.
Для цієїкоманди можуть бути дані наступні опції
-c,--nocopy — не копіювати вихідні файли в SPOOL — директорію. Якщо файли буливидалені до того, як над ними попрацював daemon UUCICO, то копіювання аварійноперерветься;
-С, --copy- ця операція відбувається за умовчання;
-d,--directories — створювати всі необхідні директорії для копіювання, якщо ценеобхідно;
-f,--nodirectories — не створювати ніяких директорій, вважаючи, що вони ужеіснують. В іншому випадку аварійно перервати копіювання;
-R — копіювати рекурсивним методом, тобто копіювати вкладені папки;
-m, --mail- повідомляти про вдале (невдале) закінчення пересилки пошти через mail;
-n user,--notify user- повідомляти про вдале (невдале) закінчення пересилки пошти черезmail для конкретного користувача на віддаленій системі;
-r,--nouucico — не запускати daemon UUCICO відразу, а ставити файли в чергу дляпізнішого виконання;
-j, --jobid- виводити на екран ідентифікаційний номер процесу;
-t, --uuto- використовується за умовчання для скрипта UUTO для коректної інтерпретаціїСИСТЕМА! ШЛЯХ;
КомандаUUSTAT
Синтаксискоманди — uustat [опції]
Показує поточний статус різних об'єктів, які підпадають піддії протоколу UUCP. Ця команда також може бути використана для того щобвідповісти на запит або послати негативну відповідь на запит, посланийкомандами UUCP або UUX.
Для повного перегляду допомоги англійською мовою в командномурядку UNIX необхідно набрати команду man uustat.
Нам будедостатньо використати команду
uustat -all- показати всю чергу запитів на передачу файлів
uustat--status — показати всі послідовності зв'язних інформаційних обмінів між усімавіддаленими машинами.
Uustat --ps- показати стан всіх процесів UUCP, які контролюють порти або доступ досистеми.UUX
Синтаксискоманди — uux [опції] команди
Ця командаслужить для виконання команд на віддалених машинах через UUCP використовуючифайли віддаленої машини. При виконанні автоматично запускається daemon UUCICO,якщо в командному рядку не стояло --nouucico
Виконання команди відбувається через активізацію daemon’аUUXQT. Аргументи файлів можуть бути зібрані з віддаленої системи і переданікеруючій системі, як потік стандартного вводу.
При написанні шляхів в якості аргументів UUX, можнавикористати знання, отримані з параграфа про UUCP.
Для більш детального перегляду допомоги англійською мовою вкомандному рядку UNIX необхідно набрати команду man UUX.
Для повного опису конфігурації необхідно розглянути такожнаступний daemon і дві додаткові утиліти
Daemon UUXQT
Синтаксисdaemon’а: UUXQT [опції]
Він виконуєкоманди, що вимагаються командою UUX з локальної або віддаленої машини. DaemonUUXQT запускається daemon’ом UUCICO відразу ж по факту виконання команди UUX,якщо в рядку не був вказаний ключ --nouucico
Розглянемоосновні опції
-c command- виконуються запити тільки для указаних в командному рядку команд;
-s system — виконуються запити, отримані з указаних в командному рядку названий систем.
УтилітаUUCHK
Синтаксисuuchk [-s система] [стандартні опції для UUCP]
UUCHK зчитує дані про конфігурацію протоколу UUCP, івідображає значно ширший спектр інформації, чим можна прочитати вконфігураціойному файлі. Цю утиліту корисно використовувати, коли відбуваєтьсяпроцес конфігурації протоколу UUCP. Опція система використовується для того,щоб указати, для яких систем необхідно вивести дані про конфігурацію. УтилітаMAKEMAP служить для перетворення файлів в бази даних для настройки SENDMAIL.
Настройкапротоколу UUCP
1) Необхідно написати конфігураційні файли для UUCP.
2) 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 sysout1.1 call
В цьому файлі описується ваш логін іпароль для продзвонки на інші uucp-машини. Природно, логін і пароль необхіднополучити від адміністратора тої машини, на яку ви зібрались дзвонити. В нашомувипадку він буде виглядати приблизно так:
======= call ======
# system login password
provider uumyhost Your_Secret_Password
======= call ======1.2 config
В цьому файлі описуються різніпараметри uucp, в основному шляхи і імена файлів. Цей файл потрібен, якщопотрібно перевизначити деякі умовчання, які або задані при компіляції.
======= config ======
nodename myhost # тут необхідно указати ваше власне 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 ======1.3 dial
Це файл з описами модемів.
======= 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 ======1.4 dialcode
Служить длянабору номера, має нульову довжину1.5 passwd
В цьому файлі містяться логін івідповідний пароль для тих систем, які будуть дзвонити вам. При роботі зпротоколом UUCP daemon uucico -l авторизує подзвонивших користувачів,пропонуючи їм при цьому ввести логін і пароль, і перевіряє правильність пароляпо цьому файлу. Які логіни і паролі можна присвоїти віддаленим машинам, якідзвонять вам – справа смаку. Правильніше дати їм логіни, які починаютьсяоднаково, наприклад, з двох букв uu.
======= passwd ======
uuhost1 Top_Secret_Password
uuhost2 Smart_Password
uuhost3 Stupid_Password
======= passwd ======1.6 port
В цьому файлі міститься опис портів.Портів може бути багато. Кожен порт має своє ім’я, яке і використовуєтьсянадалі в файлах з описами віддалених систем. 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 myhost # як ви представитесь системі host1, коли вона подзвонить
called-login uuhost1
system host2
myname myhost
called-login uuhost2
system host3
myname myhost
called-login uuhost3
======= sysin ======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 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. Візьмемо в якості шаблону такий файл
======= /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.orguucp-dom:host1
host1.your.domain.orguucp-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, тому залишилось зробити наступне:
makemaphash /etc/mailertable.db 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
Тепер залишилось тільки kill -1 `cat /var/run/sendmail.pid` 2.4 Hастройка uucp-сервера
Вважається,що ваша машина є поштовим сервером, на який ваші клієнти(host1.your.domain.org, host2.your.domain.org, host3.your.domain.org) будутьходити за поштою. Ходити за поштою вони можуть по телефону або по IP. Битисервером uucp дуже просто — коли клієнт подзвонить модемом або зайде на 540порт, йому необхідно підсунути uucico в якості shell. Краще підсовувати uucicoз ключом -l, тоді воно буде само питати пароль, а брати паролі буде з власногофайлу з паролями (/etc/uucp/passwd)
2.5Розсилання пошти користувачами
Команда
mail — відправка і отримання пошти
Синтаксис
mail [-iInv] [-s Коментар ] [-c адресапересилки]
[-b копія адрес пересилки] адресат
[-опції команди SENDMAIL ...]
mail [-iInNv] -f [ім’я користувача]
mail [-iInNv] [-u раніше заданий киристувач]
Mail — це побудована на платформі UNIX система звбудованим інтерфейсом для обробки поштових повідомлень.
Опції команди MAIL
-v — режим, коли всі деталі пересилки або прийому повідомлень виводяться на екран
-i — режим ігноруваннясигналів збросу, що поступають зі сторони телефонної лінії або сети
-N вивід на екранзаголовків повідомлень при роботі з конкретною папкою, в якій вони зберігаються
-s вказувати металиста
-c, -b посилати копії листасписку користувачів, вказаних через кому
В самому початку mail виконає команди, які прописані вфайлах usr/share/misc/mail.rc, /usr/local/etc/mail.rc і /etc/mail.rc. Потімбуде запущений файл ~/.mailrc. Mail перевірить наявність нових повідомлень впоштовій скринці користувача, а також перевірить наявність уже отриманихповідомлень в поштову скриньку.
Якщо в командному рядку була вказана команда mail безпараметрів, система увійде в режим роботи з поштовими повідомленнями. При цьомукомандний рядок буде мати вигляд &
Нижче наведені команди для роботи в цьому режимі
t
вивести на екран текст повідомлення
n
перейти до виводу на екран наступного повідомлення
e
відредагувати повідомлення
f
вивести на екран заголовки повідомлень
d
відмітити повідомлення для подальшого знищення привиході з режиму роботи з поштою
s
приєднати до повідомлення файл
u
зняти помітку з повідомлень, які або помічені длявидалення при виході з системи
R
відповісти на повідомлення тому, хто його прислав
r
відповісти всім на повідомлення
m
надіслати поштове повідомлення всім вказаним в списку
користувачам
Вийти з системи роботи з поштовими повідомленнями
Завдання на роботу
1. Зайти до мережі і переглянути поштовеповідомлення.
2. Вивести декілька поштовихповідомлень, а також заголовки усіх повідомлень.
3. Написати і відправити листіншому користувачеві.
4. Вивести на екран тавідредагувати текст повідомлення.
5. Знищити написанеповідомлення.