на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


Реферат: Программное обеспечение почтового обмена


Следующая секция - правила преобразования адресов. Но прежде чем обсуждать ее содержание следует сказать как и когда 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<$4>$5   strip multiple <> <>

               R$*<$*<$+>$*>$* <$3>$5    2-level <> nesting

               R$*<>$*   $@ <@>   MAIL FROM:<> case

               R$*<$+>$*  $2   basic RFC821/822 parsing

               # handle list:; syntax as special case

               R$*:;$*   $@ $1 :; <@>

               # make sure <@a,@b,@c:user@d> 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 <route-addr>

               # 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_part<@domain>extra" 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 [a.b.c.d]

               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  <route-addr> canonical

               R@ $*   $@ @ $1    ...and exit

               # UUCP must always be presented in old form

               R$+ @ $- . UUCP  $2!$1    u@h.UUCP => 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$*<@$+.BITNET.>$* $: $>95 < $B > $1 <@$2.BITNET.> $3 user@host.BITNET

               # forward non-local UUCP traffic to our UUCP relay

               R$*<@$*.UUCP.>$*  $: $>95 < $Y > $1 <@$2.UUCP.> $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  user@host.domain

               # 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=\r\n,

                 L=990, A=IPC $h

               Mesmtp,  P=[IPC], F=mDFMuXa, S=11/31, R=21, E=\r\n,

                 L=990, A=IPC $h

               Mrelay,  P=[IPC], F=mDFMuXa, S=11/31, R=61, E=\r\n,

                 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 25

Trying 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 <topic>".

               214-To report bugs in the implementation send email to

               214-    sendmail-bugs@sendmail.org.

               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.

                                 <10124.867839706@quest.net.kiae.su>

               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

                               <paul@quest.net.kiae.su>; 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: paul@kiae.su

               References: <33B92C6B.9FA2C1A4@kiae.su>

               Message-Id: <AAeMNkpiq1@theor.vniinm.msk.su>

               Organization: A.A. Bochvar Institute for Inorganic Materials, Theoret

               From: "Alexander Z. Solontsov" <sol@theor.vniinm.msk.su>

               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: N.M.Sergeeva

              

               Dear H.M.,

              

               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 эти пометки можно снять. Команда Quit завершает сеанс работы с сервером.

Протокол IMAP

Другим протоколом разбора почты является протокол IMAP (Interactive Mail Access Protocol), который по своим возможностям очень похож на POP3, но был разработан как более надежная альтернатива последнего и к тому же обладает более широкими возможностями по управлению процессом обмена с сервером.

Работа протокола осуществляется по 143 потру TCP. Главным отличием от POP является возможность поиска нужного сообщения и разбор заголовков сообщения.

Ниже приведен пример взаимодействия по протоколу IMAP

               OK IMAP2 Server Ready

               A001 LOGIN Fred Secret

               A001 OK User Fred logged in

               A002 SELECT INBOX

               * FLAGS (Meeting Notice \Answered \Flagged \Deleted \Seen)

               * 19 Exists

               * 2 Recent

               * A002 OK Select compete

               A003 FETCH 1:19 ALL

               * 1 Fetch ( .....

               * 19 Fetch (....

               A003 OK Fetch complete

               A004 LOGOUT

               * Bye IMAP2 server quitting

               A004 OK Logout complete

Для поиска информации используются команды FIND с различными аргументами.

Тестирование отправки почты программой Sendmail - флаг "-v"

Для того чтобы убедится, что почта уходит туда куда вы предполагаете можно, запустить sendmail из командной строки в так называемом verbowse режиме, т.е. когда диалог между транспортными агентами (двумя программами sendmail) трассируется на экране монитора или записывается в файл. Некоторые грубые ошибки в настройке sendmail можно таким образом установить, например зацикливание при локальной рассылке.

               % sendmail -v paul@citmgu.ru

               Test

               .

               paul@citmgu.ru... Connecting to local...

               paul@citmgu.ru... Sent

               % sendmail -v paul@quest.net.kiae.su

               Test

               .

               paul@quest.net.kiae.su... Connecting to quest.net.kiae.su. via esmtp...

               220 quest.net.kiae.su ESMTP Sendmail 8.7.5/8.7.3; Mon, 30 Jun 1997 11:36:31 +040

               0 (MSD)

               >>> EHLO cit-u.citmgu.ru

               250-quest.net.kiae.su Hello [194.85.135.66], pleased to meet you

               250-EXPN

               250-8BITMIME

               250-SIZE

               250-DSN

               250-VERB

               250-ONEX

               250 HELP

               >>> MAIL From:<paul@cit-u.citmgu.ru> SIZE=5

               250 <paul@cit-u.citmgu.ru>... Sender ok

               >>> RCPT To:<paul@quest.net.kiae.su>

               250 Recipient ok

               >>> DATA

               354 Enter mail, end with "." on a line by itself

               >>> .

               250 LAA07168 Message accepted for delivery

               paul@quest.net.kiae.su... Sent (LAA07168 Message accepted for delivery)

               Closing connection to quest.net.kiae.su.

               >>> QUIT

               221 quest.net.kiae.su closing connection

               %

В этом примере сначала тестируется локальная рассылка, а затем проверяется удаленная рассылка почты. Если бы на локальной машине существовал скрытый цикл, то программа выдала бы предупреждение о возможных ошибках в файле конфигурации sendmail. Однако чаще всего эти ошибки связаны с настройками named, а не sendmail.

Тестирование правил преобразования адресов

Для тестирования правил преобразования адресов sendmail запускают с флагом "-bt" для того, чтобы тестирование было более детальным, можно применять и ряд других флагов.

Пример тестирования набора правил 0 и его подправил.

               % sendmail -bt

               ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)

               Enter <ruleset> <address>

               > 0 paul@polyn.kiae.su

               rewrite: ruleset   0  input: paul @ polyn . kiae . su

               rewrite: ruleset  98  input: paul @ polyn . kiae . su

               rewrite: ruleset  98  returns: paul @ polyn . kiae . su

               rewrite: ruleset  97  input: paul @ polyn . kiae . su

               rewrite: ruleset   3  input: paul @ polyn . kiae . su

               rewrite: ruleset  96  input: paul < @ polyn . kiae . su >

               rewrite: ruleset  96 returns: paul < @ polyn . kiae . su . >

               rewrite: ruleset   3 returns: paul < @ polyn . kiae . su . >

               rewrite: ruleset   0  input: paul < @ polyn . kiae . su . >

               rewrite: ruleset  98  input: paul < @ polyn . kiae . su . >

               rewrite: ruleset  98 returns: paul < @ polyn . kiae . su . >

               rewrite: ruleset  90  input: < polyn . kiae . su > paul < @ polyn . kiae . su . >

               rewrite: ruleset  90  input: polyn . < kiae . su > paul < @ polyn . kiae . su . >

               rewrite: ruleset  90  input: polyn . kiae . < su > paul < @ polyn . kiae . su . >

               rewrite: ruleset  90 returns: paul < @ polyn . kiae . su . >

               rewrite: ruleset  90 returns: paul < @ polyn . kiae . su . >

               rewrite: ruleset  90 returns: paul < @ polyn . kiae . su . >

               rewrite: ruleset  95  input: < > paul < @ polyn . kiae . su . >

               rewrite: ruleset  95 returns: paul < @ polyn . kiae . su . >

               rewrite: ruleset   0 returns: $# esmtp $@ polyn . kiae . su . $: paul < @ polyn . kiae . su . >

               rewrite: ruleset  97 returns: $# esmtp $@ polyn . kiae . su . $: paul < @ polyn . kiae . su . >

               rewrite: ruleset   0 returns: $# esmtp $@ polyn . kiae . su . $: paul < @ polyn . kiae . su . >

               >

В этом примере четко виден порядок преобразования. Сначала производится канонизация имени, а затем его преобразование в соответствии с рассылкой. Набор правил 0 - это набор преобразования адресов получателей. После него принимается решение о рассылке почты.

Чаще всего ошибки встречаются в наборе правил 3, а точнее в поднаборе этого набора 96. Здесь производится канонизация адресов. Наибольшие проблемы проявляются с так называемыми фиктивными доменами, которые не могут быть разрешены службой доменных имен. В этом случае происходит, обычно, расширение имени именем текущего домена, и, как результат, ошибка при рассылке. Такие имена либо надо вносить в список адресов фиктивных доменов (BITNET или UUCP), либо их отлавливать и запускать написанные для них программы рассылки.

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

               %sendmail -bt -d21.12

               >3 paul@polyn.kiae.su

               ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)

               Enter <ruleset> <address>

               > rewrite: ruleset 3   input: paul @ polyn . kiae . su

               -----trying rule: $@

               ----- rule fails

               -----trying rule: $*

               -----rule matches: $: $1 < @ >

               rewritten as: paul @ polyn . kiae . su < @ >

               -----trying rule: $* < $* > $* < @ >

               ----- rule fails

               -----trying rule: $* : : $* < @ >

               ----- rule fails

               -----trying rule: : include : $* < @ >

               ----- rule fails

               -----trying rule: $* : $* < @ >

               ----- rule fails

               -----trying rule: $* < @ >

               -----rule matches: $: $1

               rewritten as: paul @ polyn . kiae . su

               -----trying rule: $* ;

               ----- rule fails

               -----trying rule: $@

               ----- rule fails

               -----trying rule: $*

               -----rule matches: $: < $1 >

               rewritten as: < paul @ polyn . kiae . su >

               -----trying rule: $+ < $* >

               ----- rule fails

               -----trying rule: < $* > $+

               ----- rule fails

               -----trying rule: < >

               ----- rule fails

               -----trying rule: < $+ >

               -----rule matches: $: $1

               rewritten as: paul @ polyn . kiae . su

               -----trying rule: @ $+ , $+

               ----- rule fails

               -----trying rule: @ $+ : $+

               ----- rule fails

               -----trying rule: $+ : $* ; @ $+

               ----- rule fails

               -----trying rule: $+ : $* ;

               ----- rule fails

               -----trying rule: $+ @ $+

               -----rule matches: $: $1 < @ $2 >

               rewritten as: paul < @ polyn . kiae . su >

               -----trying rule: $+ < $+ @ $+ >

               ----- rule fails

               -----trying rule: $+ < @ $+ >

               -----rule matches: $@ $> 96 $1 < @ $2 >

               -----callsubr 96

               rewrite: ruleset 96  input: paul < @ polyn . kiae . su >

               -----trying rule: $* < @ localhost > $*

               ----- rule fails

               -----trying rule: $* < @ localhost . net . kiae . su > $*

               ----- rule fails

               -----trying rule: $* < @ localhost . UUCP > $*

               ----- rule fails

               -----trying rule: $* < @ [ $+ ] > $*

               ----- rule fails

               -----trying rule: $* < @ @ $=w > $*

               ----- rule fails

               -----trying rule: $* < @ @ $+ > $*

               ----- rule fails

               -----trying rule: $* < @ $+ . UUCP > $*

               ----- rule fails

               -----trying rule: $* < @ $* $~P > $*

               -----rule matches: $: $1 < @ $[ $2 $3 $] > $4

               rewritten as: paul < @ polyn . kiae . su . >

               -----trying rule: $* < @ $=w > $*

               ----- rule fails

               -----trying rule: $* < @ $* $=P > $*

               -----rule matches: $: $1 < @ $2 $3 . > $4

               rewritten as: paul < @ polyn . kiae . su . . >

               -----trying rule: $* < @ $* . . > $*

               -----rule matches: $1 < @ $2 . > $3

               rewritten as: paul < @ polyn . kiae . su . >

               -----trying rule: $* < @ $* . . > $*

               ----- rule fails

               -----trying rule: $* < @ quest . net . kiae . su > $*

               ----- rule fails

               rewrite: ruleset 96 returns: paul < @ polyn . kiae . su . >

               rewritten as: paul < @ polyn . kiae . su . >

               rewrite: ruleset  3 returns: paul < @ polyn . kiae . su . >

               >96 paul@polyn.kiae.su

               > rewrite: ruleset 96   input: paul @ polyn . kiae . su

               -----trying rule: $* < @ localhost > $*

               ----- rule fails

               -----trying rule: $* < @ localhost . net . kiae . su > $*

               ----- rule fails

               -----trying rule: $* < @ localhost . UUCP > $*

               ----- rule fails

               -----trying rule: $* < @ [ $+ ] > $*

               ----- rule fails

               -----trying rule: $* < @ @ $=w > $*

               ----- rule fails

               -----trying rule: $* < @ @ $+ > $*

               ----- rule fails

               -----trying rule: $* < @ $+ . UUCP > $*

               ----- rule fails

               -----trying rule: $* < @ $* $~P > $*

               ----- rule fails

               -----trying rule: $* < @ $=w > $*

               ----- rule fails

               -----trying rule: $* < @ $* $=P > $*

               ----- rule fails

               -----trying rule: $* < @ $* . . > $*

               ----- rule fails

               -----trying rule: $* < @ quest . net . kiae . su > $*

               ----- rule fails

               rewrite: ruleset 96 returns: paul @ polyn . kiae . su

               >

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

Интерфейс mail

Самая простая и самая распространенная программа подготовки и отправки почты - это программа mail или ее аналог mailx. Для большинства современных пользователей mail покажется архаизмом времен, когда полноэкранные и графические интерфейсы еще не были даже задуманы. Однако, попробовать mail имеет смысл, т.к. ограничения mail на размер файлов не столь жесткие как в полноэкранных интерфейсах типа bml и принцип работы программы более прозрачен, чем принципы работы ее современных аналогов. Для отправки почты самому себе следует набрать следующую строку:

               mail paul

В качестве paul укажите свой почтовый адрес. В ответ программа выдаст предложение ввести сообщение:

               Subject:

Если это тестовое сообщение, лучше всего ввести слово "test". Теперь программа перейдет на следующую строку и будет ждать текста сообщения. Следует учесть, что при редактировании в mail можно использовать только стирание стоящей перед курсором буквы и только в пределах текущей строки. Если пользователь нажал клавишу Enter, то весь текст выше текущей строки недоступен для редактирования. Пусть сообщение будет состоять из одной фразы:

               This is a test message.

Для завершения ввода сообщения следует нажать Cntrl+D, что означает конец ввода. После этого сообщение будет отправлено. Окончить ввод сообщения можно и другим способом - ввести строку, которая содержит только символ "." в первой позиции.

Прочитать его можно выполнив программу mail без аргумента:

               mail

В этом случае на экране появится что-то вроде:

               Mail version 5.5 6/1/90. Type ? for help

               "/var/mail/paul": 1 message 1 new

               >N 1 paul                 Sun Feb 5 15:21  11/246

               &

Первая строка указывает на версию программы, вторая строка показывает место почтового ящика пользователя и количество сообщений в нем, при этом указывается отдельно число новых сообщений. Третья строка - это начало списка полученных почтовых сообщений. Буква "N" в начале строки указывает на то, что это новое сообщение, "1" - номер по порядку в почтовом ящике, paul - адрес отправителя, "Sun Feb 5 15:21" - дата и время отправки сообщения, "11/246" - указывает на число строк в сообщении и число байтов, которые составляют сообщение. Для просмотра сообщения следует просто нажать Enter. На экране появится:

               Message 1:

               From paul Sun Feb 5 15:21:57 1995

               Date: Sun, 5 Feb 95 15:21:57 -0700

               From: paul

               To: paul

               Subject: test

               This is a test message.

               &

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

Фактически, mail без аргументов просматривает почтовый ящик пользователя. Если в нем находятся другие сообщения, отличные от тестового сообщения пользователя, то это значит, что к пользователю пришла почта от других пользователей сети, или программ. Для прекращения просмотра сообщений, следует после знака "&" ввести символ "q".

Для отправки файла программой mail следует указать этот файл в качестве файла стандартного ввода:

               mail paul < file.in

В этом случае файл будет немедленно отправлен адресату.

Следует заметить, что от системы к системе синтаксис команды mail может незначительно меняться. Так, в системе HP/UX 9.0, mail не предлагает ввести тему сообщения, аналогично ведет себя mail и системе BSDI/386 0.9. Однако mailx из HP/UX 9.0 практически аналогична mail из BSDI/386 0.9. В любом случае имеет смысл обратиться к руководству по командам операционной системы.

Важным моментом при использовании mail является его использование в качестве фильтра:

               uuencode test.exe test.exe | mail paul@quest.polyn.kiae.su

В приведенном выше примере бинарный файл test.exe предварительно кодируется программой uuencode в файл ASCII, а затем отправляется пользователю paul на машине quest.polyn.kiae.su.

Рассмотрим теперь более современные интерфейсы подготовки почтовых сообщений bml и elm. Обе эти программы подготовки почты работают в режиме полноэкранных интерфейсов.

Интерфейс bml

Программа bml является стандартной для абонентов сети Relcom. Она входит в комплект версии для пользователей MS-DOS и имеется во многих Unix-системах сети. Для лучшей наглядности лучше обратиться к рисунку 3.4.

Рис. 3.4.

Экран в bml делится на три части:

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

При запуске программы в рабочем поле отображаются полученные сообщения, первое из которых выделено цветом. Выделенное цветом сообщение - это текущее сообщение. При этом рабочее поле разбито на четыре столбца. В первом столбце указывается адрес отправителя, во втором - дата и время получения, в третьем - число строк и символов в сообщении, четвертый столбец - тема сообщения. Для просмотра сообщения надо при помощи клавиш-стрелок сделать интересующее пользователя сообщение текущим и нажать Enter. В рабочем поле экрана появится текст сообщения (рисунок 3.5).

Рис. 3.5.

Для редактирования и подготовки сообщений следует воспользоваться режимами Create Mail и Edit mail из падающего меню Mail (рисунок 3.6).

Рис. 3.6.

Для перехода в падающее меню используется функциональная клавиша F9. Для отправки сообщения из режима редактирования следует нажать ALT+T или выйти в меню Post. При отправке почты следует заполнить специальную форму (рисунок 3.7).

Bml предоставляет еще ряд возможностей, облегчающих прием, просмотр и отправку почты (поддерживает список часто используемых адресов, посылку сообщений в телеконференции Usenet, автоматическую вставку двоичных файлов в формате uuencode и их автоматическое извлечение из полученных сообщений и ряд других). В целом, следует признать, что bml является достаточно удобным персональным средством работы с почтой.

Рис. 3.7.

Интерфейс elm

Наиболее распространенной программой работы с почтой в Unix-системах является программа elm. Elm также, как и bml, является полноэкранным почтовым интерфейсом. Запуск программы осуществляется по команде elm:

               elm

На экране появляется сообщение о версии системы, список полученных сообщений и список команд, которыми может воспользоваться пользователь. Следует обратить внимание на то, что некоторые версии elm способны подстраиваться под размер экрана автоматически. Пример экрана elm представлен на рисунке 3.8.

Рис. 3.8.

Нажимая клавиши "j" и "k", можно перемещаться вверх и вниз по списку полученных сообщений, а при нажатии клавиши Enter пользователь переходит к просмотру полученного сообщения. Для реализации других возможностей elm пользователь вводит в командной строке после слова "Command:" соответствующую букву, например, для отправки сообщения следует ввести букву "М". Вслед за этим появится приглашение ввести адрес получателя, тему письма и возможных дополнительных адресатов. Затем elm вызовет внешний редактор (обычно vi). После того, как пользователь завершил редактирование письма и вышел из редактора, elm еще раз удостоверяется в том, что письмо следует отправить по указанному адресу и, если получает подтверждение, то отправляет его.

При работе c elm следует обратить внимание на тот факт, что при выполнении команды delete, письма реально не удаляются, а только помечаются как удаленные. Реальная очистка почтового ящика происходит только при выходе из программы и только по подтверждению пользователя.

Интерфейс Eudora

Интерфейс Eudora является одним из множества почтовых интерфейсов, ориентированных на работу с почтой Internet из системы MS-Windows. На примере этого интерфейса мы рассмотрим типичные проблемы, которые возникают у пользователей персональных компьютеров при подключении к почтовому сервису Internet, и пути их решения.

Первой проблемой является тот факт, что компьютер выключается из сети на время отсутствия пользователя. Это значит, что в это время прием почтовых сообщений не производится. Следовательно, вся почта должна хранится на почтовом сервере и получаться пользователем по его запросу. При работе с Unix об этом заботится программа sendmail, в MS-Windows такой программы нет (точнее есть, но она не ориентирована на Internet). Поэтому обычно применяется следующая схема (рисунок 3.9):

Рис. 3.9. Схема работы с почтовым сервером из-под MS-Windows и MS-DOS

Такая схема предполагает, что пользователь имеет почтовый ящик на машине-сервере, которая не выключается круглосуточно. Все почтовые сообщения складываются в этот почтовый ящик. По мере необходимости, пользователь из своего почтового клиента обращается к почтовому ящику и забирает из него пришедшую на его имя почту. При отправке программа-клиент обращается непосредственно к серверу рассылки почты и передает отправляемые сообщения на этот сервер для дальнейшей рассылки.

На рисунке 3.10 приведен экран Eudora, на котором представлено меню настройки и два почтовых ящика: принятых писем и отправленных писем.

На этом рисунке в меню настроек хорошо виден POP Account - адрес пользователя на машине-сервере, SMTP-сервер и POP (Ph) сервер. Как видно из настроек, Eudora каждые 30 минут проверяет почтовый ящик пользователя и сообщает о получении новых писем. Кроме того, что Eudora позволяет читать просто письма в обычном почтовом формате Internet (RFC822), о котором пойдет речь в следующем параграфе, она распознает и новый формат, ориентированный на отображение мультимедийных почтовых сообщений MIME, который последнее время становится все более популярен в Internet.

Рис. 3.10. Интерфейс Eudora для MS-Windows

Для установки этого интерфейса требуются определенные знания и доступ к информации, которой располагает только системный администратор, поэтому предпочтительней обратиться именно к нему с просьбой об установке программы или за необходимой информацией (адреса машин серверов). Работа с Eudora чрезвычайно проста: надо выбирать при помощи мыши или клавиатуры интересующие вас сообщения и отправлять в "корзину" то, что бесполезно.

И последнее замечание относительно работы из под MS-Windows с почтой в Internet. Если пользователь пишет только по-английски, то у него нет проблем с кодировкой и набором текста, но если он пишет по-русски и получает такие же сообщения, то сразу же возникают проблемы. Дело в том, что большинство почтовых сетей для обмена данными между серверами используют кодировку KOI8. Эта кодировка отличается как от кодировки для MS-DOS, так и от кодировки MS-Windows. Поэтому, возвращаясь к иллюстрации с настройками интерфейса Eudora, хочется обратить внимание читателя на поля "Send Font" и "Printer Font". В этих полях указан шрифт "Arial-Relcom", который разложен по кодировке KOI8, и используется для отображения и печати почтовых сообщений. Для того, чтобы правильно набирать сообщения, следует к стандартным раскладкам клавиатуры в драйвере клавиатуры (cyrwin, например) добавить раскладку для KOI8.

При этом драйвер должен уметь менять раскладку по мере необходимости. В противном случае у пользователя будет возможность читать сообщения, но не набирать их.


Страницы: 1, 2


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое.


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.