
From Internet to BITNET
From BITNET to Internet
From Internet to UUCP
From UUCP to Internet
step 1 :
gzip -d sendmail.8.6.12h2.tar.gz
tar xvf sendmail.8.6.12h2.tar
step 2 : src/Makefile.SunOS (SunOS 4.1.3)
DBMDEF = -DNDBM -DNIS
LIBS = -ldbm -lresolv
step 3 :
make -f Makefile.SunOS
error on-line mainual
step 4 :
cp /usr/lib/sendmail /usr/lib/sendmail.org
make -f Makefile.SunOS install-sendmail
sendmail /usr/lib mailq newaliases
sendmail symbolic link
step 5 : sendmail.cf
cp sendmail.cf.sparc-sun-sunos4.1.3 sendmail.cf
vi sendmail.cf
DDkari.re.kr
Djkari.re.kr
DMkari.re.kr
step 6 : sendmail.cf
cp senfdmail.cf /etc
Solaris 2.4 /etc/mail
step 7 : /etc/sendmail.cw
: kari.re.kr
step 8 : newaliases
/usr/ucb/newaliases
step 9 : sendmail daemon restart
$ kill -1 `ps t"?" | grep sendmail `
$ /usr/lib/sendmail -bd -q1h
$ Mail -v cypark@garam.kreonet.re.kr
Subject: sendmail test
This is sendmail test.
Mail command is not supported Hangul messages
Please use ELM Hangul version
ctrl+D
Cc:
$ cypark@garam.kreonet.re.kr... Connecting to garam.kreonet.re.kr. (smtp)...
220-garam.kreonet.re.kr Sendmail 8.6.9H1/8.6.12 ready at Thu, 26 Oct 1995 11:40:15
220 ESMTP spoken here
>>> EHLO kari.re.kr
250-garam.kreonet.re.kr Hello [150.197.1.4], pleased to meet you
250-EXPN
250-SIZE
250 HELP
>>> MAIL From:<cypark@kari.re.kr> SIZE=107
250 <cypark@kari.re.kr>... Sender ok
>>> RCPT To:<cypark@garam.kreonet.re.kr>
250 <cypark@garam.kreonet.re.kr>... Recipient ok
>>> DATA
354 Enter mail, end with "." on a line by itself
>>> .
250 LAA21010 Message accepted for delivery
cypark@garam.kreonet.re.kr... Sent (LAA21010 Message accepted for delivery)
Closing connection to garam.kreonet.re.kr.
>>> QUIT
221 garam.kreonet.re.kr closing connection
Define Macros DDkari.re.kr
Define Class CDkari.re.kr
Set option OA/etc/aliases
Trusted Users Troot cypark
Message Precedence Pfirst-class=0
Define Mailer Mlocal, P=/bin/mail, .....
Define Header H?F?From : $q
Set Ruleset S0, S1, S2,....
Define Rule Rlhs <tab> rhs <tab> comment
lhs : pattern match, rhs : transforming the address
input address : hunt@nbsenh.bitnet
| |
rewriting rule : R$+<@$+.bitnet> $1%$2<@$B>
| |
address token : hunt<@nbsehn.bitnet>
| |
indefinite token : hunt <nbsehn>
| |
transformation : $1 % $2 < @ $B>
| | |
rewriting address : hunt%nbsehn<@cunyvm.cuny.edu>
/usr/lib/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 0 cypark ¢Ð username
rewrite: ruleset 0 input: cypark
rewrite: ruleset 98 input: cypark
rewrite: ruleset 98 returns: cypark
rewrite: ruleset 0 returns: $# local $: @ cypark
>
> 0 cypark@viva ¢Ð hostname
rewrite: ruleset 0 input: cypark @ viva
rewrite: ruleset 98 input: cypark @ viva
rewrite: ruleset 98 returns: cypark @ viva
rewrite: ruleset 97 input: cypark @ viva
rewrite: ruleset 3 input: cypark @ viva
rewrite: ruleset 96 input: cypark < @ viva >
rewrite: ruleset 96 returns: cypark < @ viva . kari . re . kr . >
rewrite: ruleset 3 returns: cypark < @ viva . kari . re . kr . >
rewrite: ruleset 0 input: cypark < @ viva . kari . re . kr . >
rewrite: ruleset 98 input: cypark < @ viva . kari . re . kr . >
rewrite: ruleset 98 returns: cypark < @ viva . kari . re . kr . >
rewrite: ruleset 0 returns: $# local $: @ cypark
rewrite: ruleset 97 returns: $# local $: @ cypark
rewrite: ruleset 0 returns: $# local $: @ cypark
>
> 0 cypark@viva.kari.re.kr ¢Ð hostname.domainname
rewrite: ruleset 0 input: cypark @ viva . kari . re . kr
rewrite: ruleset 98 input: cypark @ viva . kari . re . kr
rewrite: ruleset 98 returns: cypark @ viva . kari . re . kr
rewrite: ruleset 97 input: cypark @ viva . kari . re . kr
rewrite: ruleset 3 input: cypark @ viva . kari . re . kr
rewrite: ruleset 96 input: cypark < @ viva . kari . re . kr >
rewrite: ruleset 96 returns: cypark < @ viva . kari . re . kr . >
rewrite: ruleset 3 returns: cypark < @ viva . kari . re . kr . >
rewrite: ruleset 0 input: cypark < @ viva . kari . re . kr . >
rewrite: ruleset 98 input: cypark < @ viva . kari . re . kr . >
rewrite: ruleset 98 returns: cypark < @ viva . kari . re . kr . >
rewrite: ruleset 0 returns: $# local $: @ cypark
rewrite: ruleset 97 returns: $# local $: @ cypark
rewrite: ruleset 0 returns: $# local $: @ cypark
>
> 0 cypark@garam.kreonet.re.kr ¢Ð Ÿ±â°üÀÇ address
rewrite: ruleset 0 input: cypark @ garam . kreonet . re . kr
rewrite: ruleset 98 input: cypark @ garam . kreonet . re . kr
rewrite: ruleset 98 returns: cypark @ garam . kreonet . re . kr
rewrite: ruleset 97 input: cypark @ garam . kreonet . re . kr
rewrite: ruleset 3 input: cypark @ garam . kreonet . re . kr
rewrite: ruleset 96 input: cypark < @ garam . kreonet . re . kr >
rewrite: ruleset 96 returns: cypark < @ garam . kreonet . re . kr . >
rewrite: ruleset 3 returns: cypark < @ garam . kreonet . re . kr . >
rewrite: ruleset 0 input: cypark < @ garam . kreonet . re . kr . >
rewrite: ruleset 98 input: cypark < @ garam . kreonet . re . kr . >
rewrite: ruleset 98 returns: cypark < @ garam . kreonet . re . kr . >
rewrite: ruleset 95 input: < > cypark < @ garam . kreonet . re . kr . >
rewrite: ruleset 95 returns: cypark < @ garam . kreonet . re . kr . >
rewrite: ruleset 0 returns: $# smtp $@ garam . kreonet . re . kr . $: cypark < @ garam . kreonet . re . kr . >
rewrite: ruleset 97 returns: $# smtp $@ garam . kreonet . re . kr . $: cypark < @ garam . kreonet . re . kr . >
rewrite: ruleset 0 returns: $# smtp $@ garam . kreonet . re . kr . $: cypark < @ garam . kreonet . re . kr . >
>
> 0 cypark@aaa.bitnet ¢Ð BITNET
rewrite: ruleset 0 input: cypark @ aaa . bitnet
rewrite: ruleset 98 input: cypark @ aaa . bitnet
rewrite: ruleset 98 returns: cypark @ aaa . bitnet
rewrite: ruleset 97 input: cypark @ aaa . bitnet
rewrite: ruleset 3 input: cypark @ aaa . bitnet
rewrite: ruleset 96 input: cypark < @ aaa . bitnet >
rewrite: ruleset 96 returns: cypark < @ aaa . bitnet >
rewrite: ruleset 3 returns: cypark < @ aaa . bitnet >
rewrite: ruleset 0 input: cypark < @ aaa . bitnet >
rewrite: ruleset 98 input: cypark < @ aaa . bitnet >
rewrite: ruleset 98 returns: cypark < @ aaa . bitnet >
rewrite: ruleset 95 input: < ibm3090 . snu . ac . kr > cypark < @ aaa . BITNET >
rewrite: ruleset 95 returns: $# relay $@ ibm3090 . snu . ac . kr $: cypark < @ aaa . BITNET >
rewrite: ruleset 0 returns: $# relay $@ ibm3090 . snu . ac . kr $: cypark < @ aaa . BITNET >
rewrite: ruleset 97 returns: $# relay $@ ibm3090 . snu . ac . kr $: cypark < @ aaa . BITNET >
rewrite: ruleset 0 returns: $# relay $@ ibm3090 . snu . ac . kr $: cypark < @ aaa . BITNET >
>
> 0 cypark%viva.kari.re.kr@mit.edu ¢Ð ¿ÜºÎ¿¡¼ ³»ºÎ·Î
rewrite: ruleset 0 input: cypark % viva . kari . re . kr @ mit . edu
rewrite: ruleset 98 input: cypark % viva . kari . re . kr @ mit . edu
rewrite: ruleset 98 returns: cypark % viva . kari . re . kr @ mit . edu
rewrite: ruleset 97 input: cypark % viva . kari . re . kr @ mit . edu
rewrite: ruleset 3 input: cypark % viva . kari . re . kr @ mit . edu
rewrite: ruleset 96 input: cypark % viva . kari . re . kr < @ mit . edu >
rewrite: ruleset 96 returns: cypark % viva . kari . re . kr < @ mit . edu . >
rewrite: ruleset 3 returns: cypark % viva . kari . re . kr < @ mit . edu . >
rewrite: ruleset 0 input: cypark % viva . kari . re . kr < @ mit . edu . >
rewrite: ruleset 98 input: cypark % viva . kari . re . kr < @ mit . edu . >
rewrite: ruleset 98 returns: cypark % viva . kari . re . kr < @ mit . edu . >
rewrite: ruleset 95 input: < > cypark % viva . kari . re . kr < @ mit . edu . >
rewrite: ruleset 95 returns: cypark % viva . kari . re . kr < @ mit . edu . >
rewrite: ruleset 0 returns: $# smtp $@ mit . edu . $: cypark % viva . kari . re . kr < @ mit . edu . >
rewrite: ruleset 97 returns: $# smtp $@ mit . edu . $: cypark % viva . kari . re . kr < @ mit . edu . >
rewrite: ruleset 0 returns: $# smtp $@ mit . edu . $: cypark % viva . kari . re . kr < @ mit . edu . >
######################################
### Ruleset 0 -- Parse Address ###
######################################
S0
# resolve fake top level domains by forwarding to other hosts
R$*<@$+.BITNET>$* $: $>95 < $B > $1 <@$2.BITNET> $3 user@host.BITNET
R$*<@$+.CSNET>$* $: $>95 < $C > $1 <@$2.CSNET> $3 user@host.CSNET
# next 6 lines are added -- cypark 95/03/31 ¢Ð ÇÊ¿ä½Ã ´ÙÀ½°ú °°ÀÌ ¹Ù²Û´Ù
R$*<@karic2.$D.>$* $#local $: $1 forwared from karic2 to viva
R$*<@$->$* $#smtp $@ $2.$j $: $1 < @ $2.$j > user@host
R$*<@$+.$j>$* $#smtp $@ $2.$j $: $1 < @ $2.$j > $3
R$*<@$+.kaist.ac.kr>$* $: $>95 < $R > $1 <@$2.kaist.ac.kr> $3
R$*<@$+.andong.ac.kr>$* $: $>95 <ercc.snu.ac.kr > $1<@$2.andong.ac.kr>$3
# if you are using relay host, next line is uncomment
#R$*<@$*>$* $: $>95 < $R > $1 <@$2> $3 relayed
> 0 cypark@abc.andong.ac.kr ¢Ð ruleset 0¿¡¼ ¹Ù²Û °á°ú
rewrite: ruleset 0 input: cypark @ abc . andong . ac . kr
rewrite: ruleset 98 input: cypark @ abc . andong . ac . kr
rewrite: ruleset 98 returns: cypark @ abc . andong . ac . kr
rewrite: ruleset 97 input: cypark @ abc . andong . ac . kr
rewrite: ruleset 3 input: cypark @ abc . andong . ac . kr
rewrite: ruleset 96 input: cypark < @ abc . andong . ac . kr >
rewrite: ruleset 96 returns: cypark < @ abc . andong . ac . kr >
rewrite: ruleset 3 returns: cypark < @ abc . andong . ac . kr >
rewrite: ruleset 0 input: cypark < @ abc . andong . ac . kr >
rewrite: ruleset 98 input: cypark < @ abc . andong . ac . kr >
rewrite: ruleset 98 returns: cypark < @ abc . andong . ac . kr >
rewrite: ruleset 95 input: < ercc . snu . ac . kr > cypark < @ abc . andong . ac . kr >
rewrite: ruleset 95 returns: $# relay $@ ercc . snu . ac . kr $: cypark < @ abc . andong . ac. kr >
rewrite: ruleset 0 returns: $# relay $@ ercc . snu . ac . kr $: cypark < @ abc . andong . ac. kr >
rewrite: ruleset 97 returns: $# relay $@ ercc . snu . ac . kr $: cypark < @ abc . andong . ac. kr >
rewrite: ruleset 0 returns: $# relay $@ ercc . snu . ac . kr $: cypark < @ abc . andong . ac. kr >
>
step 1 :
uncompress popper-1.831beta.tar.Z
tar xvf popper-1.831beta.tar
step 2 : Makefile
${TARGET} : ${OBJS}
cc ${OBJS} -o ${TARGET} -lresolv
step 3 : compile & install
make
make install
step 4 : /etc/service
pop 110/tcp
pop2 109/tcp
step 5 : /etc/inetd.conf
pop tcp nowait root /usr/etc/popper popper
pop2 tcp nowait root /usr/etc/popper popper
step 6 : inetd daemon restart
$ kill -1 `ps t"?" | grep inetd`
$ inetd
Step 1 :
uncompress qpop2.1.4-r3.tar.Z
tar xvf qpop2.1.4-r3.tar
Step 2 : popper.h and make.xxx
parameter
Step 3 : compile
make sunos
popper.sunos(O/S popper.xxx)
Step 4 : install
cp popper.sunos /usr/etc/popper
Step 5 : popper1.83 Step 4
$ telnet localhost 110
Connected to localhost
Escape character is '^['
+OK UCB POP Server (Version 1.831beta) at viva starting
user cypark
+OK password requird for cypark
pass xxxx
+OK cypark has 0 message(s) (0 octets)
quit
step 1 : /etc/syslog.conf
local0.notice, local0.debug /usr/spool/mqueue/POPlog
step 2 : POPlog
touch /usr/spool/mqueue/POPlog
step 3 : Syslog daemon restart
$ kill -1 `ps t"?" | grep syslogd`
$ syslogd
+---------------+-----------------------+-----------------------------------+
| Command | Syntax | Meaning |
+---------------+-----------------------+-----------------------------------+
| Define Macro | Dxvalue | set macro x to value |
| Define Class | Ccword1 [word2].. | set class c to word1, word2.. |
| | Fcfile | load class c from file |
| Set Option | Oovalue | set option o to value |
| Trusted Users | Tuser1 [user2].. | trusted users are user1 user2.. |
| Set Precedence| Pname=number | set name to precedence number |
| Define Mailer | Mname,{field=value} | define mailer name |
| Define Header | H[?mflag?]name:format | set header format |
| Set Ruleset | Sn | start ruleset number n |
| Define Rule | Rlhs rhs comment | rewrite lhs pattern to rhs format |
+---------------+-----------------------+-----------------------------------+
Required sendmail macros
+--------+-------------------------------+------------------------------+
| Macro | Value assigned this macro | Example |
+--------+-------------------------------+------------------------------+
| e | SMTP entry message | De$j Sendmail $v ready at $b |
| j | site's official domain name | Dj$w.$D |
| l | format of UNIX from line | DlFrom $g $d |
| n | name used in error messages | DnMAILER-DAEMON |
| o | set of operators in address | Do.:%\@!^=/ |
| q | default sender address format | Dq$g$?x ($x)$. |
+--------+-------------------------------+------------------------------+
DDkari.re.kr
+------+-----------------------------------------------------+
|Macro | Function |
+------+-----------------------------------------------------+
| a | origination date in RFC822 format |
| b | current date in RFC822 format |
| c | hop count |
| d | date in UNIX(ctime) format |
| e | SMTP entry messages |
| f | sender "from" address |
| g | sender address relative to the recipient |
| h | recipient host |
| i | queue id |
| j | "official" domain name for this site |
| l | format of the UNIX from line |
| n | name of the daemon(for error messages) |
| o | set of "operators" in address |
| p | sendmail's PID |
| q | default format of sender address |
| r | protocol used |
| s | sender's hostname |
| t | numeric representation of the current time |
| u | recipient user |
| v | version number of sendmail |
| w | hostname of this site |
| x | full name of the sender |
| z | home directory of the recipient |
+------+-----------------------------------------------------+
Dwgaram
DDkreonet.re.kr
Dj$w.$D
array of values
used for anything with multiple values, such as multiple names for the local host or list of UUCP hostname
CVbronson ora Fw/etc/sendmail.cwThe Set Option Command( O )
internal options set inside the sendmail.cf file
string, integer, boolean, time interval
OA/etc/aliases OH/usr/lib/sendmail.hf OF0600 OT3dDefining Trusted Users ( T )
users who are permitted to override the sender name using -f flag
must be valid user name from the /etc/passwd file
OTroot OTdaemon uucp OTcyparkDefining Mail Precedence ( P )
assign priority to message entering its queue
higher number means high precedence
default value is zero
negative number indicate especially low priority mail
Pfirst-class=0 Pspecial-delivery=100 Pjunk=-100Defining Mail Headers ( H )
optional head flag enclosed in question marks, a header name, a colon and a header template
H?P?Return-Path: <$g> HReceived: $?sfrom $s $.by $j ($v/$Z) H?D?Recent-Date: $a H?D?Date: $a H?F?Recent-From: $q H?F?From: $q H?x?Full-Name: $x HSubject: H?M?Recent-Message-Id: <$t.$i@$j> H?M?Message-Id: <$t.$i@$j>Defining Mailers ( M )
mail delivery programs used by sendmail
Mailer Definition Fields +-------+-----------+----------------------------------+-------------+ | Field | Meaning | Contents |Example | +-------+-----------+----------------------------------+-------------+ | P | Path | path of the mailer |P=/bin/mail | | F | Flags | sendmail flags for this mailer |F=lsDFMe | | S | Sender | ruleset for sender address |S=10 | | R | Recipient | ruleset for recipient address |R=20 | | A | Argv | the mailer's argument vector |A=sh-c $u | | E | Eol | end-of-line string for the mailer|E=\r\n | | M | Maxsize | Maximum message length |M=100000 | +-------+-----------+----------------------------------+-------------+Defining Mailers ()
Sendmail Mailer Flag +-----+---------------------------------------------------------------+ |Name | Function | +-----+---------------------------------------------------------------+ | C | add @domain to address that do not have an @ | | D | the mailer wants a Date: header line | | E | add > to message lines that begin with From: | | e | this is an expensive mailer, see sendmail option c | | F | the mailer wants a From: header line | | f | the mailer accepts a -f flag from trusted users | | h | preserve uppercase in hostnames | | I | the mailer will be speaking SMTP to another sendmail | | L | limit the line lengths are as specified in RFC821 | | l | this is a local mailer | | M | this mailer wants a Message-Id: header line | | m | the mailer can send to multiple users in one transaction | | n | don't insert a UNIX-style From: line in the message | | P | the mailer wants a Return-Path: line | | R | use the MAIL From: return path rather than the return address | | r | the mailer accepts a -r flag from trusted users | | S | don't reset the userid before calling the mailer | | s | strip quotes off of the address before calling the mailer | | U | the mailer wants Unix-style From: lines | | u | preserve uppercase in the usernames | | X | prepend a dot to lines beginning with a dot | | x | the mailer wants a Full-Name: header line | +-----+---------------------------------------------------------------+ Mlocal, P=/bin/mail, F=rlsDFMmn, S=10, R=20, A=mail -d $uRewriting the Mail Address ( R )
rulesets are groups of individual rewrite rules used to phase e-mail address from user mail program and rewrite them into the form required by the mail delivery program
seperated by tab characters
a) Pattern Matching ( The Left Hand Side ) Pattern Matching Symbols +---------+-----------------------------------------------------------+ | Symbol | Meaning | +---------+-----------------------------------------------------------+ | $* | match zero or more tokens | | $+ | match one or more tokens | | $- | match exactly one token | | $=x | match any token in class x | | $~x | match any token not in class x | | $x | match all token in macro x | | $%x | match any token in NIS map named in macro x (Sun) | | $!x | match any token not in NIS map named in macro x (Sun) | | $%y | match any token in NIS hosts.byname map (Sun) | +---------+-----------------------------------------------------------+ cypark@garam.kreonet.re.kr | | $- @ $+ | | $1 @ $2 b) Transfomation the Address ( The Right Hand Side ) Transformation Metasymbols +---------------+------------------------------------------------+ | Symbol | Meaning | +---------------+------------------------------------------------+ | $x | expand macro x | | $n | substitute indefinite token n from LHS | | $>n | call ruleset n | | $#mailer | resolve to mailer | | $@ | terminate rewrite ruleset | | $: | terminate rewrite rule | | $[host$] | map to primary hostname | | ${x name$} | map name through yp map $x (Sun) | +---------------+------------------------------------------------+ input address : hunt@nbsenh.bitnet | | rewriting address: R$+<@$+.bitnet> $1%$2<@$B> | | address tocken: hunt<@nbsenh.bitnet> | | indefinite token: hunt nbsenh | | transformation $1 % $2 < @ $B> | | | rewritten address: hunt%nbsenh<@cunyvm.cuny.edu>Sendmail Command-line Arguments
+------------------+-------------------------------------------------+ | option | meaning | +------------------+-------------------------------------------------+ | -bd | run as a daemon | | -bt | run in test mode | | -bi | initialize the alias database | | -bp | print mail queue | | -bz | freeze the configuration file | | -q[time] | repeat at interval time | | -Cfile | use file as the configuration file | +------------------+-------------------------------------------------+