:

:

( 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

user@localhost.localdomain

user@alias

user@alias.localdomain

user@[local.host.internet.address]

localhost!user

localhost!localhost!user

user@localhost.uucp

- , , .

UUCP :

host!user

host!host!user

user@host.uucp

, , UUCP ( ), , , . UUCP.

SMTP - , RFC-822 Internet. :

usr@host

usr@host.domain

<@host1,@host2,@host3:user@host4>

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 (i.e., 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>$|$g$.

# Configuration version number

DZ8.6.6

, sendmail . , , . - , q:

Dq$?x$x <$g>$|$g$.

. :

" x , : q = _x <_g>, : q=_g".

-:

if(x!=NULL)

{

strcpy(q,x);

strcat(q," <");

strcat(q,g);

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:

<$t.$i@$j>

H?M?Message-Id: <$t.$i@$j>

, . . 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<$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.

. , .


2012 , , .