$ od -c -N 50000 [_CD8_]<indigoifs>IfsMail.dm!4 0000000 377 \0 \0 I f s M a i l . d e c l \0 0000020 373 226 362 034 320 \0 \0 376 001 \0 # d / / I 0000040 f s M a i l . d e c l - I n 0000060 t e r i m F i l e S y s t e 0000100 m I n t e r i m M a i l S 0000120 y s t e m \r / / C o p y r i g 0000140 h t X e r o x C o r p o r a 0000160 t i o n 1 9 7 9 , 1 9 8 0 , 0000200 1 9 8 1 \r / / L a s t m o 0000220 d i f i e d A p r i l 1 , 0000240 1 9 8 1 1 0 : 0 4 A M b 0000260 y T a f t \r \r / / O v e r v 0000300 i e w \r / / \r / / M a i l a 0000320 r r i v e s e i t h e r f r 0000340 o m a m a i l u s e r p 0000360 r o g r a m s u c h a s L 0000400 a u r e l , o r \r / / f r 0000420 o m a n o t h e r m 376 001 \0 312 0000440 205 a i l s y s t e m s u c h 0000460 a s a n o t h e r I f s 0000500 o r M a x c , o r f r o m 0000520 \r / / s o m e j o b i n 0000540 s i d e I F S ( m a i l e r 0000560 , p r i n t e r , e t c ) . 0000600 \r / / T h e M a i l T r a 0000620 n s f e r P r o t o c o l i 0000640 s s p o k e n o v e r a 0000660 B y t e S t r e a m P r o t 0000700 o c o l \r / / c o n n e c t 0000720 i o n a f t e r r e n d e z 0000740 v o u s i n g a t t h e w 0000760 e l l k n o w n M a i l S 0001000 e r v e r s o c k e t . \r / / 0001020 T h e I F S m a i l s y 0001040 s 376 001 \0 226 N t e m u s e s t 0001060 w o t y p e s o f j o b : 0001100 M T P S e r v e r s a n d 0001120 M a i l J o b . \r / / A n 0001140 M T P S e r v e r a c c e p t 0001160 s m a i l f r o m t h e 0001200 n e t a n d q u e u e s i 0001220 t f o r M a i l J o b . \r / 0001240 / M a i l J o b s o r t s 0001260 n e w l y a r r i v e d m 0001300 a i l a n d f o r w a r d s 0001320 q u e u e d m a i l . \r / / 0001340 S o r t i n g c o n s i 0001360 s t s o f e n u m e r a t i 0001400 n g n e w m a i l f i l e 0001420 s a n d a p p e n d i n g 0001440 c o p i e s 376 001 \0 M 311 \r / / 0001460 e i t h e r t o a l o 0001500 c a l m a i l b o x o r t 0001520 o a q u e u e f i l e f 0001540 o r a n o t h e r m a i l 0001560 s e r v e r . \r / / F o r 0001600 w a r d i n g c o n s i s t s 0001620 o f e n u m e r a t i n g 0001640 t h e q u e u e f i l e s 0001660 a n d t r y i n g t o s e 0001700 n d \r / / t h e m t o 0001720 r e m o t e m a i l s e r 0001740 v e r s . M a i l J o b i 0001760 s a n M T P u s e r . \r \r 0002000 / / C o n t r o l \r / / \r / / 0002020 T h e e n t i r e M a i l 0002040 s y s t e m c a n 376 001 \0 216 3 0002060 b e t u r n e d o n o r 0002100 o f f b y t o g g l i n g 0002120 M S . e n a b l e d . \r / / 0002140 I f t h i s b i t i s 0002160 o f f , a l l m a i l - r e 0002200 l a t e d a c t i v i t y i 0002220 s d i s a b l e d : \r / / 0002240 n o m a i l w i l l b e 0002260 s t o r e d o r r e t r i 0002300 e v e d , \r / / n o m a 0002320 i l w i l l b e s o r t e 0002340 d t o l o c a l m a i l 0002360 b o x e s , a n d \r / / 0002400 n o m a i l w i l l b e 0002420 f o r w a r d e d t o o t h 0002440 e r s i t e s . \r / / T h e 0002460 376 001 \0 w 8 F o r w a r d e r 0002500 c a n b e t u r n e d o n 0002520 o r o f f b y t o g g l 0002540 i n g M S . f o r w a r d . \r 0002560 / / D i s a b l i n g f o 0002600 r w a r d i n g a l l o w s 0002620 I F S t o s u p p o r t a 0002640 c l o s e d m a i l c o m 0002660 m u n i t y . \r / / I f t 0002700 h i s b i t i s o f f : \r 0002720 / / n o m a i l w i l 0002740 l b e a c c e p t e d f o 0002760 r n o n - l o c a l m a i l 0003000 b o x e s , a n d \r / / 0003020 n o m a i l w i l l b e 0003040 f o r w a r d e d t o o t h 0003060 e r s i 376 001 \0 277 255 t e s . \r \r 0003100 / / D i s t r i b u t i o n 0003120 l i s t s \r / / \r / / A m a 0003140 i l s e r v e r i s a l s 0003160 o a n F t p s e r v e r . 0003200 R e q u e s t s t o r e 0003220 t r i e v e a f i l e \r / / 0003240 a r e i n t e r c e p t e 0003260 d . T h e j o b i s l 0003300 o g g e d i n a s " M a i 0003320 l " , a n d t h e r e q u 0003340 e s t e d \r / / f i l e n a 0003360 m e i s p r e f i x e d w 0003400 i t h a s y s t e m p a r 0003420 a m e t e r s t r i n g a n 0003440 d p o s t f i x e d \r / / 0003460 w i t h " . d l " 376 001 \0 215 g . 0003500 T h e r e t r i e v e i 0003520 s t h e n a l l o w e d t 0003540 o p r o c e e d . \r \r / / G 0003560 r a p e v i n e s u p p o r t 0003600 \r / / \r / / T w o s y s t e 0003620 m p a r a m e t e r s p e r 0003640 m i t a n I F S m a i l 0003660 s e r v e r t o c o o p e r 0003700 a t e w i t h \r / / t h e 0003720 n e w m a i l s y s t e m 0003740 w h i c h w i l l e v e n 0003760 t u a l l y r e p l a c e i 0004000 t . \r / / I f a ' r e 0004020 g i s t r y ' s t r i n g i 0004040 s s p e c i f i e d , r e c 0004060 i p i e n t s e n d i n g 376 0004100 001 \0 232 6 i n " . r e g i s t r 0004120 y " \r / / w i l l b e 0004140 t r e a t e d a s i f t 0004160 h e r e g i s t r y r e s o 0004200 l v e d t o t h e m a i l 0004220 s e r v e r a d d r e s s . 0004240 \r / / I f a ' g v N a 0004260 m e ' s t r i n g i s s p 0004300 e c i f i e d , a l l m a i 0004320 l f o r n o n - l o c a l \r 0004340 / / m a i l b o x e s 0004360 i s f o r w a r d e d t h e 0004400 r e . I f t h i s s t r 0004420 i n g i s n o t s e t b 0004440 y t h e \r / / m a i l 0004460 s y s t e m a d m i n i s t 0004500 r a t o 376 001 \0 U < r , m a i l 0004520 i s f o r w a r d e d t o 0004540 t h e r e c i p i e n t \r / 0004560 / n a m e ' s r e g i 0004600 s t r y . \r \f \r / / U n d e l 0004620 i v e r a b l e m a i l \r / / 0004640 \r / / I f a m e s s a g e 0004660 i s u n d e l i v e r a b l 0004700 e , t h e n i t i s r e 0004720 t u r n e d t o i t s s e 0004740 n d e r . \r / / I f t h e 0004760 r e c i p i e n t o f a n 0005000 u n d e l i v e r a b l e m e 0005020 s s a g e i s t h e d e a 0005040 d l e t t e r \r / / d e p 0005060 a r t m e n t , t h e n t h 0005100 e m e s s a g e 376 001 \0 & 225 i 0005120 s d i s c a r d e d w i t h 0005140 o u t a t r a c e . \r / / 0005160 T h e n a m e o f t h e 0005200 d e a d l e t t e r d e p 0005220 a r t m e n t i s a s y s 0005240 t e m p a r a m e t e r . \r / 0005260 / O t h e r w i s e , a n 0005300 e w m e s s a g e i s c r 0005320 e a t e d w i t h t h e f 0005340 o l l o w i n g c o n t e n t 0005360 s : \r / / \r / / T o : ( s 0005400 e n d e r e q M a i l e r . 0005420 T h i s H o s t ? D e a d L e 0005440 t t e r , S e n d e r ) \r / / 0005460 F r o m : M a i l e r . T 0005500 h i s H o s t \r / / S u 376 001 0005520 \0 246 033 b j e c t : U n d e l i 0005540 v e r a b l e m a i l \r / / \r 0005560 / / U n d e l i v e r a b l 0005600 e t o : < l i s t o f r 0005620 e c i p i e n t s > \r / / - 0005640 - - - - - - - - - - - - - - - - 0005660 - - - - - - \r / / < m e s s 0005700 a g e > \r \r / / S t a t i s t 0005720 i c s \r / / \r / / S t a t i s 0005740 t i c s a r e k e p t o n 0005760 f i v e i t e m s ; t h r 0006000 e e t h i n g s a r e r e 0006020 c o r d e d : \r / / S a m p 0006040 l e s : t o t a l n u m b e 0006060 r o f t i m e s a v a l 0006100 u e w a s r e c o r d e d . 0006120 \r / / 376 001 \0 352 256 A v e r a g 0006140 e : a v e r a g e v a l u e 0006160 o f t h e s t a t i s t i 0006200 c . \r / / H i s t o g a r m 0006220 : e i g h t s l o t l o g 0006240 a r i t h m i c a l l y s c a 0006260 l e d h i s t o g r a m o f 0006300 v a l u e s . \r / / T h e 0006320 f i v e i t e m s a r e : \r 0006340 / / L e n g t h ( c h a r 0006360 a c t e r s ) - l e n g t h 0006400 o f a m e s s a g e r e 0006420 c e i v e d b y t h e m a 0006440 i l s e r v e r . \r / / R 0006460 e c i p i e n t s - t h e 0006500 n u m b e r o f r e c i p i 0006520 e n t s ( T o 376 001 \0 271 h : p 0006540 l u s c c : ) o f a m e 0006560 s s a g e . \r / / S o r t 0006600 d e l a y ( s e c ) - t i 0006620 m e b e t w e e n r e c e i 0006640 v i n g a m e s s a g e a 0006660 n d a p p e n d i n g \r / / 0006700 c o p i e s t o l o c a 0006720 l m a i l b o x e s o r q 0006740 u e u e i n g c o p i e s f 0006760 o r f o r w a r d i n g . \r / 0007000 / F w d d e l a y ( s e 0007020 c ) - t i m e b e t w e e 0007040 n q u e u e i n g a m e s 0007060 s a g e f o r a r e m o t 0007100 e \r / / m a i l s e r v 0007120 e r a n d s u c e s s 376 001 \0 0007140 206 [ f u l l y d e l i v e r i 0007160 n g i t . \r / / R e t r i 0007200 e v e d e l a y ( m i n ) 0007220 - t i m e b e t w e e n a 0007240 p p e n d i n g a m e s s a 0007260 g e t o a m a i l b o x \r 0007300 / / a n d t h e r e c 0007320 i p i e n t r e t r i e v i n 0007340 g i t . \r / / M e s s a g 0007360 e s t h a t a r e d i s c 0007400 a r d e d a s u n d e l i v 0007420 e r a b l e a r e c o u n t 0007440 e d . \r \r / / F i l e c o n 0007460 v e n t i o n s \r / / \r / / A 0007500 M a i l F i l e c o n s i 0007520 s t s o f 0 o r m o r e 0007540 M 376 001 \0 \n 325 e s s a g e s . \r 0007560 / / A M e s s a g e c o 0007600 n s i s t s o f a H e a d 0007620 e r , s o m e B l o c k s 0007640 a n d s o m e T e x t . \r / 0007660 / A H e a d e r ( s t 0007700 r u c t u r e M H ) d e s c 0007720 r i b e s a m e s s a g e . 0007740 \r / / I t c o n t a i 0007760 n s p o i n t e r s t o t 0010000 h e B l o c k a n d T e x 0010020 t a r e a s , l e n g t h s 0010040 , e t c . \r / / A B l 0010060 o c k ( s t r u c t u r e M 0010100 B ) c o n s i s t s o f a 0010120 T y p e , a L e n g t h , 0010140 a n d a 376 001 \0 315 ! B o d y 0010160 . \r / / T h e T y p e 0010200 d e s c r i b e s t h e f 0010220 o r m a t o f t h e b l o 0010240 c k . \r / / T h e L e 0010260 n g t h i s t h e l e n g 0010300 t h o f t h e b l o c k 0010320 I N W O R D S i n c l u d i 0010340 n g i t s e l f . \r / / 0010360 T h e B o d y i s a r b 0010400 i t r a r y s t u f f w h o 0010420 s e f o r m a t d e p e n d 0010440 s o n t h e b l o c k t 0010460 y p e . \r / / T h e T e 0010500 x t i s a s e q u e n c e 0010520 o f b y t e s . I t s 0010540 l e n g t h m a y b 376 001 \0 s 0010560 s e o d d , \r / / i n 0010600 w h i c h c a s e i t i 0010620 s f o l l o w e d b y a 0010640 g a r b a g e p a d d i n g 0010660 b y t e . \r / / \r / / 3 2 - b 0010700 i t b y t e p o s i t i o n 0010720 s a r e u s e d i n t h 0010740 e h e a d e r . \r / / A l l 0010760 c o m p o n e n t s ( M e s 0011000 s a g e , H e a d e r , B l 0011020 o c k , T e x t , e t c . ) 0011040 b e g i n o n \r / / w o 0011060 r d b o u n d a r i e s a n 0011100 d a r e e v e n n u m b e 0011120 r s o f b y t e s l o n g 0011140 . \r / / \r / / < M a i l > N e 0011160 w 376 001 \0 017 223 > M a i l ! * i s 0011200 m a i l a w a i t i n g s 0011220 o r t i n g b y M a i l J o 0011240 b . \r / / < M a i l > B o x > 0011260 U s e r ! 1 i s m a i l a 0011300 w a i t i n g r e t r i e v a 0011320 l b y U s e r . \r / / < M 0011340 a i l > F w d > H o s t ! 1 i 0011360 s m a i l a w a i t i n g 0011400 f o r w a r d i n g t o H o 0011420 s t . \r \f \r m a n i f e s t \r [ 0011440 \r s o c k e t M a i l = 7 \t 0011460 \t / / w e l l k n o w n P 0011500 u p s o c k e t \r \r m h S e a 0011520 l = 1 1 0 b \t \t / / M H 0011540 s e a l \r m h V e r s i o n = 0011560 2 \t \t / / 376 001 \0 022 332 M H f 0011600 o r m a t v e r s i o n \r m s 0011620 V e r s i o n = 1 \t \t / / 0011640 M S f o r m a t v e r s i o 0011660 n \r m s S t a t s V e r s i o n 0011700 = 2 \t / / M S . s t a t s 0011720 f o r m a t v e r s i o n \r 0011740 \r d e l i v e r y T i m e o u t 0011760 = 4 8 \t / / h o u r s a 0012000 f t e r w h i c h a m s g 0012020 i s d e e m e d u n d e l 0012040 i v e r a b l e \r j o b I n t e 0012060 r v a l = 5 * 6 0 \t / / s 0012100 e c o n d s b e t w e e n b 0012120 a c k g r o u n d M a i l J o 0012140 b a c t i v a t i o n s \r m i 0012160 n S o r t I n t e r v 376 001 \0 266 0 0012200 a l = 5 * 6 0 \t / / a t t 0012220 e m p t t o s o r t f i l 0012240 e n o m o r e o f t e n 0012260 t h a n t h i s \r m i n F o r 0012300 w a r d I n t e r v a l = 1 0012320 0 * 6 0 / / a t t e m p t 0012340 t o f o r w a r d f i l e 0012360 n o m o r e o f t e n t h 0012400 a n t h i s \r e v e n t I n t 0012420 e r v a l = 5 \t / / s e c 0012440 o n d s b e t w e e n M a i 0012460 l E v e n t s \r o p e n T i m 0012500 e o u t = 5 \t \t / / s e c 0012520 o n d s t o o p e n a f 0012540 i l e , r e t r y i n g o n 0012560 c e a s e c o n d \r \r m a x 0012600 376 001 \0 R X M a i l P a r a m C h 0012620 a r s = 3 9 \t / / m a x 0012640 s t r i n g l e n g t h i n 0012660 M S s t r u c t u r e \r l e 0012700 n M a i l P a r a m S t r i n g 0012720 = ( m a x M a i l P a r a m 0012740 C h a r s + 2 ) r s h i f t 0012760 1 \r \r f P r o p T y p e M s g I 0013000 D = 3 0 0 b \t / / F P R O 0013020 P t y p e p r i v a t e t 0013040 o I F S m a i l s e r v e 0013060 r \r \r / / M a i l B o x E x 0013100 c e p t i o n c o d e s \r e c 0013120 U n s p e c i f i e d = 7 0 0013140 0 \t / / 0 U n s p e c i f i 0013160 e d f a i l u r e \r e c C a n 0013200 t L o c a 376 001 \0 320 356 t e = 7 0013220 0 1 \t / / 1 C a n ' t l o 0013240 c a t e m a i l b o x \r e c N 0013260 o t R e s i d e n t = 7 0 2 0013300 \t / / 2 M a i l b o x i s 0013320 n ' t l o c a l & f o r w 0013340 a r d i n g d i s a b l e d \r 0013360 e c N a m e T o A d d r e s s 0013400 = 7 0 4 \t / / 4 U n a b l 0013420 e t o c o n v e r t r e g 0013440 i s t r y n a m e t o a d 0013460 d r e s s \r e c D e l i v e r y 0013500 T i m e o u t = 7 0 5 \t / / 0013520 U n d e l i v e r a b l e a 0013540 f t e r 4 8 h o u r s \r e c 0013560 I l l e g a l R e g i s t r y 0013600 = 7 0 6 \t / / 4 376 001 \0 026 < 0013620 R e g i s t r y d o e s n o 0013640 t r e s o l v e t o M T P 0013660 s o c k e t \r e c N o R e g i 0013700 s t r y = 7 0 7 \t / / 4 0013720 N a m e d o e s n o t c o 0013740 n t a i n a r e g i s t r y 0013760 \r e c F w d L o o p = 7 0 8 0014000 \t \t / / 4 M e s s a g e f 0014020 o r w a r d i n g i n a l 0014040 o o p \r \r / / M a i l T r a 0014060 n s f e r P r o t o c o l N 0014100 o c o d e s \r e c M l b x R e 0014120 q u i r e d = 7 1 0 \t / / 0014140 4 0 M L B X p r o p e r t y 0014160 r e q u i r e d . \r e c M l b 0014200 x N o t U n a m O r C n a m 376 0014220 001 \0 M 230 = 7 1 1 / / 4 1 0014240 M a i l b o x m u s t b e 0014260 U s e r - N a m e o r C o n 0014300 n e c t - N a m e . \r e c N o M 0014320 a i l b o x = 7 1 2 \t / / 0014340 4 1 N o m a i l b o x b y 0014360 t h a t n a m e h e r e . 0014400 \r e c M a i l N o t R e t r i e 0014420 v e d = 7 1 3 / / 1 1 0 0014440 M a i l n o t r e t r i e 0014460 v e d : $ P \r e c M a i l N o 0014500 t S t o r e d = 7 1 4 \t / / 0014520 1 1 0 M a i l n o t s t 0014540 o r e d : $ P \r e c S n d r R 0014560 e q u i r e d = 7 1 5 \t / / 0014600 1 1 0 S e n d e r p r o p 0014620 e r t y 376 001 \0 B 231 m i s s i n 0014640 g \r e c A n o n R e t r i e v e 0014660 = 7 1 6 \t / / 3 M a i l 0014700 - s e r v e r R e t r i e v e 0014720 n o t a l l o w e d \r e c N 0014740 o V a l i d M l b x = 7 1 7 0014760 \t / / 4 0 N o v a l i d 0015000 r e c i p i e n t s f o r m 0015020 e s s a g e \r e c Z e r o L e n 0015040 g t h M s g = 7 1 8 \t / / 0015060 1 1 0 M e s s a g e h a s 0015100 z e r o l e n g t h \r e c R e 0015120 g i s t r y N o t L o c a l = 0015140 7 1 9 / / 1 0 0 R e g i 0015160 s t r y i s n o t l o c a 0015200 l \r \r / / M a i l s y s t e 0015220 m I F S e r r 376 001 \0 222 h o r 0015240 c o d e s \r e c B a d M s g S 0015260 e a l = 7 2 0 \t / / B a d 0015300 M H . s e a l i n m s g 0015320 $ 1 O \r e c E o f I n H d r = 0015340 7 2 1 \t / / U n e x p e c t 0015360 e d E O F i n H d r a r 0015400 e a o f m s g $ 1 O \r e c 0015420 E o f I n B l k = 7 2 2 \t / 0015440 / U n e x p e c t e d E O F 0015460 i n B l k a r e a o f 0015500 m s g $ 1 O \r e c E o f I n T 0015520 x t = 7 2 3 \t / / U n e x 0015540 p e c t e d E O F i n T x 0015560 t a r e a o f m s g $ 1 0015600 O \r e c M l b x I n d e x = 0015620 7 2 4 \t / / C a n ' t f 376 001 0015640 \0 \v 244 i n d m l b x i n d e 0015660 x $ 1 D i n m s g $ 2 O 0015700 \r e c L e a d e r P r o p s = 0015720 7 2 5 \t / / F P R O P a r 0015740 e a i n l e a d e r p a g 0015760 e $ 1 O o v e r f l o w e d 0016000 \r e c M l b x D e l F a i l e d 0016020 = 7 2 6 \t / / F a i l e d 0016040 t o d e l e t e m a i l b 0016060 o x \r ] \r \r / / - - - - - - - - 0016100 - - - - - - - - - - - - - - - - * 0016200 - - - \r s t r u c t u r e M a 0016220 i l : \t \t / / M a i l S y s 0016240 t e m 376 001 \0 325 X s t a t e k 0016260 e p t i n c o r e \r / / - - 0016300 - - - - - - - - - - - - - - - - * 0016400 - - - - - - - - - \r [ \r w a k e 0016420 w o r d \t \t / / e v e n t I 0016440 n t e r v a l s u n t i l n 0016460 e x t M a i l J o b c r e a 0016500 t i o n \r c t x w o r d \t \t / 0016520 / - > M a i l J o b c t x 0016540 o r 0 i f n o t a c t 0016560 i v e \r u i w o r d \t \t \t / / 0016600 - > u i : u s e r N a m e 0016620 = S y s t e m , c o n n N 0016640 a m e = m a 376 001 \0 j 305 i l \r 0016660 r s w o r d \t \t \t / / - > 0016700 M T P R e n d e z v o u s s 0016720 o c k e t ( N O T a - > 0016740 P u p S o c ) \r m s g I D w o 0016760 r d 2 \t \t / / m e s s a g e 0017000 I D \r f l a g s w o r d = 0017020 \r [ \r e n a b l e d 0017040 b i t \t \t / / m a i l s y 0017060 s t e m i s e n a b l e d \r 0017100 f o r w a r d b i t \t \t 0017120 / / f o r w a r d i n g i s 0017140 e n a b l e d \r w o r k 0017160 T o D o b i t \t \t / / t h e 0017200 r e i s w o r k f o r M 0017220 a i l J o b \r b l a n k 0017240 b i t 1 3 \r ] \r ] 376 001 \0 0017260 200 023 \r m a n i f e s t l e n M 0017300 a i l = s i z e M a i l / 0017320 1 6 \r \f \r / / - - - - - - - - - 0017340 - - - - - - - - - - - - - - - - * 0017440 - - - \r s t r u c t u r e M S 0017460 E : \t \t / / M a i l S t a t 0017500 i s t i c s E n t r y \r / / - 0017520 - - - - - - - - - - - - - - - - * 0017620 - - - - - - - - - - - \r [ \r m a 0017640 x b i t 4 \t \t / / = 7 , 0017660 m 376 001 \0 302 322 a x h i s t o g 0017700 r a m e n t r y i n d e x \r 0017720 g r a i n b i t 4 \t \t / / 0017740 l o g ( 2 ) r a t i o b e t 0017760 w e e n s u c c e s s i v e 0020000 e n t r i e s \r s c a l e b i 0020020 t 4 \t \t / / l o g ( 2 ) v 0020040 a l u e o f f i r s t e n 0020060 t r y \r s c a l e T o t a l b 0020100 i t 4 \t / / l o g ( 2 ) s 0020120 c a l e f a c t o r f o r 0020140 t o t a l \r c a l l s ^ 0 , 1 0020160 w o r d \t \t / / t o t a l n 0020200 u m b e r o f s a m p l e s 0020220 \r t o t a l ^ 0 , 1 w o r d \t 0020240 \t / / ( s u m o f s a m p 0020260 l e v a l u 376 001 \0 1 Z e s ) / 0020300 ( 2 ^ t o t a l S c a l e ) \r h 0020320 i s t o g r a m ^ 0 , 7 w o r 0020340 d 2 \r ] \r m a n i f e s t l 0020360 e n M S E = s i z e M S E 0020400 / 1 6 \r \r / / - - - - - - - - - 0020420 - - - - - - - - - - - - - - - - * 0020520 - - - \r s t r u c t u r e M S 0020540 : \t \t / / M a i l S y s t e 0020560 m s t a t e k e p t i n 0020600 f i l e < S y s t e m > I n f 0020620 o \r / / - - - - - - - - - - - - 0020640 - - - - - - - - - - - - - - - - 0020660 - - - - - - - - - - - - 376 001 \0 352 0020700 021 - - - - - - - - - - - - - - - 0020720 - - - - - - - - - - - - - - - - 0020740 - - - - - \r [ \r f l a g s w o 0020760 r d = \r [ \r e n a 0021000 b l e d b i t \t \t / / m a i 0021020 l s y s t e m e n a b l e d 0021040 \r f o r w a r d b i t \t 0021060 \t / / i n t e r - s i t e f 0021100 o r w a r d i n g e n a b l e 0021120 d \r b l a n k b i t 6 0021140 \r v e r s i o n b y t e 0021160 \t \t / / = m s V e r s i o n 0021200 \r ] \r d e a d L t r w o 0021220 r d l e n M a i l P a r a m S 0021240 t r i n g / / n a m e o 0021260 f d e a d l e t t e r d e 0021300 s 376 001 \0 p 312 t i n a t i o n \r n 0021320 a m e D i r D L w o r d l e 0021340 n M a i l P a r a m S t r i n g 0021360 / / d i r e c t o r y c 0021400 o n t a i n i n g d i s t r i 0021420 b u t i o n l i s t s \r r e g 0021440 i s t r y w o r d l e n M a 0021460 i l P a r a m S t r i n g / 0021500 / g r a p e v i n e r e g i 0021520 s t r y w e a r e p a r t 0021540 o f \r g v N a m e w o r d 0021560 l e n M a i l P a r a m S t r i 0021600 n g / / n a m e o f g 0021620 r a p e v i n e s e r v e r \r 0021640 b l a n k w o r d 1 2 8 - 4 0021660 * l e n M a i l P a r a m S t r 0021700 i n g \r s t 376 001 \0 354 " a t s V e 0021720 r s i o n w o r d \t / / = 0021740 m s S t a t s V e r s i o n \r s 0021760 t a t s w o r d = \r [ 0022000 \r t i m e R e s e t w o 0022020 r d 2 \t / / t i m e s t a 0022040 t i s t i c s w e r e l a s 0022060 t r e s e t \r d i s c a 0022100 r d w o r d 2 \t / / n u m 0022120 b e r o f m e s s a g e s 0022140 d i s c a r d e d \r m s e 0022160 L e n @ M S E \t \t / / l e n 0022200 g t h o f m e s s a g e i 0022220 n b y t e s \r m s e M l 0022240 b x @ M S E \t \t / / n u m b 0022260 e r o f m a i l b o x e s \r 0022300 m s e S o r t 376 001 \0 327 251 0022320 @ M S E \t \t / / t i m e s p 0022340 e n t i n < M a i l > N e w 0022360 > M a i l \r m s e R e t r 0022400 @ M S E \t \t / / t i m e s 0022420 p e n t i n < M a i l > B o 0022440 x > U s e r \r m s e F w d 0022460 @ M S E \t \t / / t i m e s 0022500 p e n t i n < M a i l > F w 0022520 d > H o s t \r ] \r ] \r m a 0022540 n i f e s t l e n M S = s 0022560 i z e M S / 1 6 \r m a n i f e 0022600 s t l e n M S S t a t s = 0022620 l e n M S - o f f s e t M 0022640 S . s t a t s / 1 6 \r \r m a n i 0022660 f e s t \t \t / / M a i l S t 0022700 a t t y p e s \r [ \r m s T y p 0022720 376 001 \0 k ] e D i s c a r d = 0022740 1 \r m s T y p e L e n = 2 \r 0022760 m s T y p e M l b x = 3 \r m 0023000 s T y p e S o r t = 4 \r m s 0023020 T y p e R e t r = 5 \r m s T 0023040 y p e F w d = 6 \r ] \r \f \r / 0023060 / - - - - - - - - - - - - - - - 0023100 - - - - - - - - - - - - - - - - * 0023160 - - - - - - - - - - - - \r s t r 0023200 u c t u r e M H : \t \t / / M 0023220 e s s a g e H e a d e r \r / / 0023240 - - - - - - - - - - - - - - - - * 0023320 - - - - - 376 001 \0 217 037 - - - - - - 0023340 - - - - - - - - - - - - - - - - 0023360 \r [ \r s e a l b y t e \t \t / / 0023400 = m h S e a l \r v e r s i o 0023420 n b y t e \t \t / / = m h V 0023440 e r s i o n \r d a t e w o r d 0023460 2 \t \t / / d a t e m s g 0023500 w a s p u t i n t h i s 0023520 f i l e \r p o s B l k w o r d 0023540 2 \t \t / / b y t e p o s 0023560 o f f i r s t b l o c k \r p 0023600 o s S n d r w o r d 2 \t \t / 0023620 / b y t e p o s o f s e 0023640 n d e r b l o c k \r n u m A c 0023660 t i v e w o r d \t \t / / n u 0023700 m b e r o f a c t i v e r 0023720 e c i p i e n t s \r 376 001 \0 > 303 p 0023740 o s T x t w o r d 2 \t \t / / 0023760 b y t e p o s o f t e x 0024000 t \r l e n T x t w o r d 2 \t 0024020 \t / / l e n g t h o f t e 0024040 x t i n b y t e s \r p o s B 0024060 e g i n w o r d 2 \t \t / / 0024100 b y t e p o s o f b e g i 0024120 n n i n g o f t h i s m e 0024140 s s a g e \r p o s E n d w o r 0024160 d 2 \t \t / / b y t e p o s 0024200 o f e n d o f t h i s 0024220 m e s s a g e + 1 \r ] \r m a n i 0024240 f e s t l e n M H = s i z 0024260 e M H / 1 6 \r \r / / - - - - - 0024300 - - - - - - - - - - - - - - - - 0024320 - - - - - - - - - - - - - - - 376 0024340 001 \0 P Z - - - - - - - - - - - - 0024360 - - - - - - - - - - - - - - - - 0024400 - - - - - - - - - - - \r s t r u 0024420 c t u r e M s g : \t \t / / A 0024440 n M H w i t h s o m e i 0024460 n - c o r e s t a t e a d d 0024500 e d \r / / - - - - - - - - - - - 0024520 - - - - - - - - - - - - - - - - * 0024620 \r [ \r s t r e a m w o r d \t \t 0024640 / / - > d i s k s t r e a 0024660 m \r h o s t Q : \t \t \t / / a 0024700 q u e u e o f H Q I s \r 0024720 [ \r h e a d w o r d \r 0024740 t 376 001 \0 004 4 a i l w o r 0024760 d \r ] \r g v H Q I w o r 0025000 d \t \t / / - > H Q I f o r 0025020 g v N a m e , i f t h e r 0025040 e i s o n e \r u M s g w o 0025060 r d \t \t / / - > u n d e l i 0025100 v e r a b l e m e s s a g e 0025120 m s g o r z e r o i f n 0025140 o n e \r m h w o r d = @ M 0025160 H \t \t / / M e s s a g e H e 0025200 a d e r f r o m f i l e \r ] 0025220 \r m a n i f e s t l e n M s g 0025240 = s i z e M s g / 1 6 \r \r 0025260 / / - - - - - - - - - - - - - - 0025300 - - - - - - - - - - - - - - - - * 0025340 - - - - - - - - - 376 001 \0 2 T - - 0025360 - - - - - - - - - - - - - - - - 0025400 - - \r s t r u c t u r e H Q I 0025420 : \t \t / / H o s t Q u e u e 0025440 I t e m - b u i l t b y 0025460 C h e c k N a m e \r / / - - - 0025500 - - - - - - - - - - - - - - - - * 0025600 - - - - - - - - \r [ \r l i n k 0025620 w o r d \r e c w o r d \t \t \t / 0025640 / e x c e p t i o n c o d e 0025660 \r f l a g s w o r d = \r 0025700 [ \r i s L o c a l b i 0025720 t \t \t / / n a m e m a p s 0025740 t o o u r a d d r e s s 376 001 0025760 \0 201 ^ o r m a t c h e s M 0026000 S . r e g i s t r y \r i s 0026020 P a r t n e r b i t \t / / n 0026040 a m e m a p s t o a d d r 0026060 e s s o f h o s t g i v i 0026100 n g u s m a i l \r u s 0026120 e d b i t \t \t / / a t l e 0026140 a s t o n e r e c i p i e n 0026160 t n a m e m e n t i o n s 0026200 t h i s r e g i s t r y \r 0026220 b l a n k b i t 1 3 \r 0026240 ] \r n a m e w o r d \t \t / / 0026260 n a m e s t r i n g b e g 0026300 i n s h e r e \r ] \r m a n i f 0026320 e s t l e n H Q I = s i z 0026340 e H Q I / 1 6 \r \f \r / / - - - 0026360 - - - 376 001 \0 364 \0 - - - - - - - - 0026400 - - - - - - - - - - - - - - - - * 0026460 - - - - - - - - - - - - - \r s t 0026500 r u c t u r e M B : \t \t / / 0026520 M e s s a g e B l o c k \r / / 0026540 - - - - - - - - - - - - - - - - * 0026640 - - - - - - - - - - - \r [ \r t y 0026660 p e b y t e \t \t / / d e f i 0026700 n e s f o r m a t o f f o 0026720 l l o w i n g w o r d s \r l e 0026740 n g t h b y t e \t \t / / o f 0026760 b l o c k i 376 001 \0 1 343 n w 0027000 o r d s i n c l u d i n g t 0027020 h i s w o r d \r ] \r m a n i f 0027040 e s t m a x L e n M B = 1 0027060 l s h i f t s i z e M B . 0027100 l e n g t h \r \r m a n i f e s t 0027120 \t \t / / M B . t y p e v a l 0027140 u e s \r [ \r m b T y p e F r e e 0027160 = 1 \t \t / / F r e e b l 0027200 o c k \r m b T y p e M l b x = 0027220 2 \t \t / / M L B X n a m e 0027240 \r m b T y p e S n d r = 3 \t 0027260 \t / / S N D R n a m e \r m b 0027300 T y p e E x c p = 4 \t \t / / 0027320 M a i l b o x e x c e p t i 0027340 o n \r m b T y p e T e m p F r e 0027360 e = 5 \t / / S e e 376 001 \0 0027400 022 l I f s M a i l F o r w a r d 0027420 \r m b T y p e T e m p E x c p 0027440 = 6 \t / / " \r ] \r \r / / - - 0027460 - - - - - - - - - - - - - - - - * 0027560 - - - - - - - - - \r s t r u c t 0027600 u r e M N B : \t \t / / M B 0027620 c o n t a i n i n g a M a i 0027640 l B o x o r S e n d e r n 0027660 a m e \r / / - - - - - - - - - - 0027700 - - - - - - - - - - - - - - - - * 0030000 - \r 376 001 \0 363 H [ \r @ M B \r b l a 0030020 n k w o r d \t \t / / c u r r 0030040 e n t l y z e r o \r e c w o 0030060 r d \t \t \t / / e x c e p t i o 0030100 n c o d e \r n a m e w o r d 0030120 1 2 8 \t \t / / M L B X o r 0030140 S N D R s t r i n g \r ] \r m 0030160 a n i f e s t l e n M N B H d 0030200 r = o f f s e t M N B . n 0030220 a m e / 1 6 \r \r / / - - - - - - 0030240 - - - - - - - - - - - - - - - - * 0030340 - - - - - \r s t r u c t u r e 0030360 F P r o p M s g I D : \t / / l 0030400 e a d e r p 376 \0 265 R ; a g e 0030420 f i l e p r o p e r t y \r / / 0030440 - - - - - - - - - - - - - - - - * 0030540 - - - - - - - - - - - \r [ \r t y 0030560 p e b i t 8 \r l e n g t h 0030600 b i t 8 \r m s g I D w o r d 0030620 2 \r ] \r m a n i f e s t l e 0030640 n F P r o p M s g I D = s i 0030660 z e F P r o p M s g I D / 1 6 0030700 \r 377 \0 \0 I f s M a i l I n i t . 0030720 b c p l \0 373 227 347 233 033 \0 \0 376 001 \0 " 0030740 202 / / I f s M a i l I n i t . 0030760 b c p l - M a i l s y s t 0031000 e m i n i t i a l i z a t i o 0031020 n \r / / C o p y r i g h t X 0031040 e r o x C o r p o r a t i o n 0031060 1 9 7 9 , 1 9 8 0 , 1 9 8 0031100 1 \r / / L a s t m o d i f i 0031120 e d O c t o b e r 4 , 1 9 0031140 8 1 4 : 1 5 P M b y T 0031160 a f t \r \r g e t " P u p 0 . d 0031200 e c l " \r g e t " P u p 1 . d 0031220 e c l " \r g e t " I f s F t p 0031240 P r o t . d e c l " \r g e t " 0031260 I f s F i l e s . d e c l " \r g 0031300 e t " I f s M a i l . d e c l 0031320 " \r g e t " I f s . d e c l " 0031340 \r 376 001 \0 n \b g e t " I f s S y 0031360 s t e m I n f o . d e c l " \r \r 0031400 e x t e r n a l \r [ \r / / o u 0031420 t g o i n g p r o c e d u r e 0031440 s \r I n i t M a i l ; I n i t 0031460 M a i l S t a t s \r \r / / i n 0031500 c o m i n g p r o c e d u r e 0031520 s \r C r e a t e E v e n t ; M 0031540 a i l E v e n t ; I f s F t p 0031560 S e r v \r U n q u e u e ; E n 0031600 q u e u e ; A l l o c a t e ; 0031620 Z e r o ; R e a d C a l e n 0031640 d a r \r E x t r a c t S u b s t 0031660 r i n g ; O p e n L e v e l 1 0031700 S o c k e t \r M t p S S t o r e 0031720 ; M t p S S t o r e M a i l ; 0031740 M t p S S 376 001 \0 016 \r t o r e C 0031760 l e a n u p \r M t p S R e t r i 0032000 e v e ; M t p S R e t r i e v 0032020 e M a i l ; M t p S R e t r i 0032040 e v e C l e a n u p \r L o c k C 0032060 e l l ; U n l o c k C e l l ; 0032100 V F i l e W r i t e P a g e \r 0032120 \r / / o u t g o i n g s t a 0032140 t i c s \r m a i l \r \r / / i n 0032160 c o m i n g s t a t i c s \r s 0032200 y s Z o n e ; r s Q ; d F T 0032220 P I ; i n f o V M D ; s o c 0032240 k e t Q \r ] \r \r s t a t i c m 0032260 a i l \r \r / / - - - - - - - - - 0032300 - - - - - - - - - - - - - - - - * 0032340 - - - - - - - - - - - 376 001 \0 263 \a 0032360 - - - - - - - - - - - - - - - - 0032400 - - - - - - - - \r l e t I n i 0032420 t M a i l S t a t s ( m s ) b 0032440 e \r / / - - - - - - - - - - - - 0032460 - - - - - - - - - - - - - - - - * 0032560 \r / / A s s u m e s t h e 0032600 p a g e p o i n t e d a t 0032620 b y m s i s l o c k e d 0032640 a n d m a r k e d d i r t y 0032660 . \r [ \r Z e r o ( l v m s > > 0032700 M S . s t a t s , l e n M S S 0032720 t a t s ) \r m s > > M S . s t a 0032740 t s V e r s i o n = m s S t 0032760 376 001 \0 352 e a t s V e r s i o n \r 0033000 R e a d C a l e n d a r ( l v 0033020 m s > > M S . t i m e R e s e t 0033040 ) \r l e t m s e = l v m 0033060 s > > M S . m s e L e n ; m s 0033100 e > > M S E . m a x = 7 ; \r 0033120 m s e > > M S E . g r a i n = 0033140 1 ; m s e > > M S E . s c a 0033160 l e = 6 ; m s e > > M S E 0033200 . s c a l e T o t a l = 0 \r 0033220 m s e = l v m s > > M S . 0033240 m s e M l b x ; m s e > > M S 0033260 E . m a x = 7 ; \r m s e > > 0033300 M S E . g r a i n = 1 ; m 0033320 s e > > M S E . s c a l e = 0033340 1 ; m s e > > M S E . s c a l 0033360 e T o t a 376 001 \0 324 266 l = 0 \r 0033400 m s e = l v m s > > M S . 0033420 m s e S o r t ; m s e > > M S 0033440 E . m a x = 7 ; \r m s e > > 0033460 M S E . g r a i n = 1 ; m 0033500 s e > > M S E . s c a l e = 0033520 0 ; m s e > > M S E . s c a l 0033540 e T o t a l = 0 \r m s e = 0033560 l v m s > > M S . m s e R e 0033600 t r ; m s e > > M S E . m a x 0033620 = 7 ; \r m s e > > M S E . g 0033640 r a i n = 2 ; m s e > > M 0033660 S E . s c a l e = 8 ; m s 0033700 e > > M S E . s c a l e T o t a 0033720 l = 6 \r m s e = l v m 0033740 s > > M S . m s e F w d ; m s 0033760 e > > M S E . m a x 376 001 \0 026 321 0034000 = 7 ; \r m s e > > M S E . g r 0034020 a i n = 1 ; m s e > > M S 0034040 E . s c a l e = 0 ; m s e 0034060 > > M S E . s c a l e T o t a l 0034100 = 0 \r ] \r \f \r / / - - - - - 0034120 - - - - - - - - - - - - - - - - * 0034220 - - - - - - - \r a n d I n i t 0034240 M a i l ( ) b e \r / / - - - - 0034260 - - - - - - - - - - - - - - - - * 0034360 - - - - - - - - \r / / T h i 376 0034400 001 \0 021 235 s s h o u l d b e 0034420 c a l l e d A F T E R I n i 0034440 t F t p S e r v a n d O p e 0034460 n S y s t e m I n f o . \r [ \r / 0034500 / B u i l d t h e m a i l 0034520 s y s t e m s t a t e b l 0034540 o c k \r m a i l = A l l o c 0034560 a t e ( s y s Z o n e , l e n 0034600 M a i l ) ; Z e r o ( m a i l 0034620 , l e n M a i l ) \r \r / / R 0034640 e g i s t e r t h e M a i l 0034660 s o c k e t w i t h t h e 0034700 s o c k e t m a n a g e r \r 0034720 l e t r s = A l l o c a t 0034740 e ( s y s Z o n e , l e n R S 0034760 ) ; Z e r o ( r s , l e n R 0035000 S ) \r r 376 001 \0 d 212 s > > R S . p 0035020 r o c = I f s F t p S e r v 0035040 \r r s > > R S . s o c = A l 0035060 l o c a t e ( s y s Z o n e , 0035100 l e n P u p S o c ) \r O p e n L 0035120 e v e l 1 S o c k e t ( r s > > 0035140 R S . s o c , t a b l e [ 0035160 0 ; 0 ; s o c k e t M a i l 0035200 ] ) \r r s > > R S . e x t r a 0035220 S p a c e = l e n E x t r a 0035240 F t p C t x \r r s > > R S . t y 0035260 p e = j o b T y p e M T P \r 0035300 E n q u e u e ( r s Q , r s ) 0035320 \r m a i l > > M a i l . r s = 0035340 r s \r \r / / B u i l d a 0035360 u s e r i n f o b l o c k 0035400 f o r i n t e r 376 001 \0 021 y n a 0035420 l m a i l o p e r a t i o n 0035440 s \r l e t u i = A l l o c 0035460 a t e ( s y s Z o n e , l e n 0035500 U s e r I n f o ) ; Z e r o ( 0035520 u i , l e n U s e r I n f o ) 0035540 \r u i > > U s e r I n f o . u s 0035560 e r N a m e = E x t r a c t 0035600 S u b s t r i n g ( " S y s t e 0035620 m " ) \r u i > > U s e r I n f o 0035640 . c o n n N a m e = E x t r 0035660 a c t S u b s t r i n g ( " M a 0035700 i l " ) \r m a i l > > M a i l . 0035720 u i = u i \r \r / / I n s t 0035740 a l l m a i l o p e r a t i 0035760 o n s i n d e f a u l t F 0036000 T P I n t e r f a c e \r d 376 001 0036020 \0 324 353 F T P I > > F T P I . S t 0036040 o r e M a i l = M t p S S t 0036060 o r e \r d F T P I > > F T P I . 0036100 S t o r e M a i l M e s s a g e 0036120 = M t p S S t o r e M a i l 0036140 \r d F T P I > > F T P I . S t o 0036160 r e M a i l C l e a n u p = 0036200 M t p S S t o r e C l e a n u p 0036220 \r d F T P I > > F T P I . R e t 0036240 r i e v e M a i l = M t p S 0036260 R e t r i e v e \r d F T P I > > 0036300 F T P I . R e t r i e v e M a i 0036320 l M e s s a g e = M t p S R 0036340 e t r i e v e M a i l \r d F T P 0036360 I > > F T P I . R e t r i e v e 0036400 M a i l C l e a n u p = M t 0036420 p S R 376 001 \0 271 p e t r i e v e C 0036440 l e a n u p \r \r / / C h e c k 0036460 l o n g t e r m m a i l 0036500 s y s t e m s t a t e \r l e t 0036520 m s = V F i l e W r i t e 0036540 P a g e ( i n f o V M D , m s 0036560 P a g e ) \r L o c k C e l l ( l 0036600 v m s ) \r i f m s > > M S . 0036620 v e r s i o n n e m s V e r 0036640 s i o n t h e n \r [ 0036660 / / H m m m . D o e s n ' t 0036700 s e e m t o b e s e t 0036720 u p \r Z e r o ( m s , l 0036740 e n M S ) \r m s > > M S . 0036760 v e r s i o n = m s V e r s 0037000 i o n \r ] \r i f m s > > 0037020 M S . s t a t s 376 001 \0 344 / V e r 0037040 s i o n n e m s S t a t s V 0037060 e r s i o n t h e n I n i t 0037100 M a i l S t a t s ( m s ) \r m a 0037120 i l > > M a i l . e n a b l e d 0037140 = m s > > M S . e n a b l e 0037160 d \r i f m s > > M S . e n a b 0037200 l e d e q 0 t h e n U n 0037220 q u e u e ( s o c k e t Q , r 0037240 s > > R S . s o c ) \r m a i l > 0037260 > M a i l . f o r w a r d = 0037300 m s > > M S . f o r w a r d \r U 0037320 n l o c k C e l l ( l v m s ) 0037340 \r R e a d C a l e n d a r ( l v 0037360 m a i l > > M a i l . m s g I 0037400 D ) \r \r / / S t a r t t h e 0037420 m a i l e v e n t \r m 376 \0 H 0037440 177 251 a i l > > M a i l . w a k e 0037460 = 6 0 / e v e n t I n t e r 0037500 v a l / / 1 m i n u t e 0037520 \r C r e a t e E v e n t ( M a i 0037540 l E v e n t ) \r ] \r 377 \0 \0 I f s 0037560 M a i l R e s . b c p l \0 373 225 034 0037600 P 241 \0 \0 376 001 \0 _ 210 / / I f s M 0037620 a i l R e s . b c p l - - M 0037640 a i l S y s t e m R E S I D 0037660 E N T c o d e \r / / C o p y 0037700 r i g h t X e r o x C o r p 0037720 o r a t i o n 1 9 7 9 \r / / 0037740 L a s t m o d i f i e d A p 0037760 r i l 1 0 , 1 9 8 0 1 : 0040000 4 7 A M b y B o g g s \r \r 0040020 g e t " I f s F t p P r o t . 0040040 d e c l " \r g e t " I f s M a 0040060 i l . d e c l " \r \r e x t e r n 0040100 a l \r [ \r / / o u t g o i n g 0040120 p r o c e d u r e s \r M a i l 0040140 E v e n t \r \r / / i n c o m i 0040160 n g p r o c e d u r e s \r C r 0040200 e a t e J o b ; 376 001 \0 362 364 Q u 0040220 e u e E v e n t ; M a i l J o 0040240 b \r \r / / i n c o m i n g s 0040260 t a t i c s \r m a i l \r ] \r \r / 0040300 / - - - - - - - - - - - - - - - 0040320 - - - - - - - - - - - - - - - - * 0040400 - - - - - - - - - - - - - \r l e 0040420 t M a i l E v e n t ( e c b ) 0040440 b e \r / / - - - - - - - - - - 0040460 - - - - - - - - - - - - - - - - * 0040560 - - \r [ \r i f m a i l > > M a 0040600 i l . w a k e n e 0 t 376 001 0040620 \0 / S h e n \r m a i l > > 0040640 M a i l . w a k e = m a i l 0040660 > > M a i l . w a k e - 1 \r \r 0040700 i f ( m a i l > > M a i l . w 0040720 a k e e q 0 % m a i l > 0040740 > M a i l . w o r k T o D o n 0040760 e 0 ) & \r m a i l > > M a 0041000 i l . c t x e q 0 & m a 0041020 i l > > M a i l . e n a b l e d 0041040 n e 0 t h e n \r m a 0041060 i l > > M a i l . c t x = C 0041100 r e a t e J o b ( M a i l J o b 0041120 , j o b T y p e M a i l , l 0041140 e n E x t r a F t p C t x ) \r \r 0041160 Q u e u e E v e n t ( e c b , 0041200 e v e n t I n t e r v a l * 1 0 0041220 0 ) \r 376 \0 002 ] 017 ] \r 377 \0 \0 I f s 0041240 M a i l J o b . b c p l \0 373 230 335 0041260 376 2 \0 \0 376 001 \0 I h / / I f s M 0041300 a i l J o b . b c p l - - s 0041320 o r t s a n d f o r w a r d 0041340 s m a i l \r / / C o p y r i 0041360 g h t X e r o x C o r p o r 0041400 a t i o n 1 9 7 9 , 1 9 8 0 0041420 , 1 9 8 1 , 1 9 8 2 \r / / 0041440 L a s t m o d i f i e d A p 0041460 r i l 9 , 1 9 8 2 1 2 : 0041500 3 3 P M b y T a f t \r \r g 0041520 e t " I f s . d e c l " \r g e 0041540 t " I f s M a i l . d e c l " 0041560 \r g e t " I f s D i r s . d e 0041600 c l " \r g e t " I f s F t p P 0041620 r o t . d e c l " \r g e t " A 0041640 l t o F i l e S y s . d " \r \r e 0041660 x t e r n a l \r [ 376 001 \0 026 201 \r / 0041700 / o u t g o i n g p r o c e 0041720 d u r e s \r M a i l J o b ; E 0041740 n u m e r a t e M a i l F i l e 0041760 ; E n u m e r a t e M B ; R 0042000 e a d M B \r \r / / i n c o m i 0042020 n g p r o c e d u r e s f r 0042040 o m o t h e r m a i l m o 0042060 d u l e s \r S o r t N e w M a i 0042100 l ; F o r w a r d M a i l ; 0042120 S t a r t U n d e l i v M s g ; 0042140 F i n i s h U n d e l i v M s 0042160 g \r \r / / i n c o m i n g p 0042200 r o c e d u r e s f r o m I 0042220 F S d i r s \r L o o k u p I F 0042240 S F i l e ; N e x t F D ; D 0042260 e s t r o y F D ; D e l e 376 001 0042300 \0 304 . t e F i l e F r o m F D ; 0042320 G e t B u f f e r F o r F D \r 0042340 L o c k T r a n s f e r L e a d 0042360 e r P a g e ; O p e n I F S S 0042400 t r e a m ; C l o s e I F S S 0042420 t r e a m ; C l o s e I F S F 0042440 i l e \r \r / / i n c o m i n g 0042460 p r o c e d u r e s - m i 0042500 s c \r D e s t r o y J o b ; J 0042520 o b O K ; I F S E r r o r ; 0042540 I F S P r i n t E r r o r \r R e 0042560 a d B l o c k ; W r i t e B l 0042600 o c k ; C l o s e s ; E n d 0042620 o f s ; F i l e P o s ; S e 0042640 t F i l e P o s \r D o u b l e I 0042660 n c r e m e n t ; D o u b l e 0042700 U s c 376 001 \0 h 236 ; D o u b l e 0042720 A d d ; M u l \r S y s A l l o 0042740 c a t e ; S y s F r e e ; R 0042760 e a d C a l e n d a r ; Z e r 0043000 o ; P u t T e m p l a t e \r \r 0043020 / / i n c o m i n g s t a t 0043040 i c s \r m a i l ; d e b u g F 0043060 l a g \r ] \r \r / / - - - - - - - 0043100 - - - - - - - - - - - - - - - - * 0043200 - - - - \r l e t M a i l J o b 0043220 ( c t x ) b e \t / / a c o 0043240 n t e x t \r / / - - - - - - - - 0043260 - - - - - - - - - - - - - - - - 0043300 - - - - - - - - 376 001 \0 1 \0 - - - 0043320 - - - - - - - - - - - - - - - - * 0043360 - - - - - - - - \r [ \r c t x > > 0043400 R S C t x . u s e r I n f o = 0043420 m a i l > > M a i l . u i \r \r 0043440 [ / / r e p e a t \r 0043460 m a i l > > M a i l . w o r 0043500 k T o D o = f a l s e \r 0043520 E n u m e r a t e M a i l D i 0043540 r ( " < M a i l > N e w > M a i 0043560 l ! * * " , S o r t N e w M a 0043600 i l , m i n S o r t I n t e r 0043620 v a l ) \r E n u m e r a t 0043640 e M a i l D i r ( " < M a i l > 0043660 F w d > * * ! 1 " , F o r w a 0043700 r d M a i l , m i n F o 376 001 \0 0043720 306 374 r w a r d I n t e r v a l ) 0043740 \r ] r e p e a t w h i l 0043760 e m a i l > > M a i l . e n a 0044000 b l e d n e 0 & m a i l 0044020 > > M a i l . w o r k T o D o 0044040 n e 0 & \r J o b 0044060 O K ( j o b T y p e M a i l ) \r 0044100 \r m a i l > > M a i l . w a k e 0044120 = j o b I n t e r v a l / e 0044140 v e n t I n t e r v a l \r m a i 0044160 l > > M a i l . c t x = 0 \r 0044200 D e s t r o y J o b ( ) \r ] \r \f 0044220 \r / / - - - - - - - - - - - - - 0044240 - - - - - - - - - - - - - - - - * 0044320 - - 376 001 \0 % 252 - - - - - - - - - 0044340 - - - - \r a n d E n u m e r a 0044360 t e M a i l D i r ( d i r N a m 0044400 e , P r o c , m i n I n t e 0044420 r v a l ) b e \r / / - - - - - 0044440 - - - - - - - - - - - - - - - - * 0044540 - - - - - - - \r / / E n u m e 0044560 r a t e s a l l f i l e s 0044600 m a t c h i n g d i r N a m e 0044620 , o p e n s a s t r e a m 0044640 a n d c a l l s P r o c . 0044660 \r / / S k i p s o v e r a 0044700 f i l e i f i t w a s 0044720 l a s t c h 376 001 \0 + f e c k e 0044740 d l e s s t h a n m i n I 0044760 n t e r v a l s e c o n d s 0045000 a g o , \r / / u n l e s s i 0045020 t h a s b e e n w r i t t 0045040 e n m o r e r e c e n t l y 0045060 t h a n t h a t . \r / / I 0045100 f P r o c r e t u r n s t 0045120 r u e , t h e f i l e i s 0045140 t h e n d e l e t e d . \r [ 0045160 \r l e t f d = L o o k u p 0045200 I F S F i l e ( d i r N a m e , 0045220 l c M u l t i p l e ) \r i f 0045240 f d e q 0 r e t u r n \r \r 0045260 [ / / r e p e a t \r 0045300 / / C o n t i n u e o r 0045320 s t o p ? \r i f 376 001 \0 ^ 0045340 v m a i l > > M a i l . e n a 0045360 b l e d e q 0 b r e a k \r 0045400 u n l e s s J o b O K ( 0045420 j o b T y p e M a i l ) d o 0045440 [ m a i l > > M a i l . w o r 0045460 k T o D o = t r u e ; b r 0045500 e a k ] \r \r / / W e 0045520 s h o u l d l o o k c l o s 0045540 e l y a t t h i s f i l e 0045560 i f i t h a s b e e n 0045600 w r i t t e n s i n c e \r 0045620 / / l a s t r e a d o r 0045640 i f i t h a s n ' t b e 0045660 e n r e a d f o r a t l 0045700 e a s t m i n I n t e r v a l 0045720 . \r l e t t i m e = 0045740 v 376 001 \0 : Y e c 1 ; R e a d 0045760 C a l e n d a r ( t i m e ) \r 0046000 D o u b l e I n c r e m e n 0046020 t ( t i m e , - m i n I n t e 0046040 r v a l ) \r l e t l d 0046060 = G e t B u f f e r F o r F D 0046100 ( f d ) \r l e t o k = 0046120 L o c k T r a n s f e r L e a 0046140 d e r P a g e ( f d , l d ) 0046160 e q 0 & \r ( D o u b 0046200 l e U s c ( l v l d > > L D . 0046220 w r i t t e n , l v l d > > 0046240 L D . r e a d ) g r 0 % \r 0046260 D o u b l e U s c ( t 0046300 i m e , l v l d > > L D . r 0046320 e a d ) g e 0 ) \r S y 0046340 s F r e e ( 376 001 \0 311 A l d ) \r 0046360 u n l e s s o k l o o p 0046400 \r \r / / O p e n t h e 0046420 f i l e a n d s e e w h 0046440 a t ' s i n s i d e . \r 0046460 l e t s t r e a m = O p e 0046500 n I F S S t r e a m ( f d , 0 0046520 , m o d e R e a d W r i t e ) 0046540 \r i f s t r e a m n e 0046560 0 t h e n \r [ \r 0046600 l e t d e l e t e 0046620 = P r o c ( s t r e a m ) \r 0046640 / / D o n o t 0046660 u n l o c k f i l e i f w 0046700 e ' r e g o i n g t o d e 0046720 l e t e i t . \r C 0046740 l o s e I F S S t r e 376 001 \0 _ \f 0046760 a m ( s t r e a m , d e l e t 0047000 e ) \r i f d e l e 0047020 t e t h e n \r 0047040 i f D e l e t e F i l e F r 0047060 o m F D ( f d , f a l s e , 0047100 t r u e ) n e 0 t h e n 0047120 C l o s e I F S F i l e ( f d ) 0047140 \r ] \r ] r e 0047160 p e a t w h i l e N e x t F D 0047200 ( f d ) \r \r / / D o n e e n 0047220 u m e r a t i o n - - c l e 0047240 a n u p a n d g o a w a y 0047260 \r D e s t r o y F D ( f d ) \r ] 0047300 \r \f \r / / - - - - - - - - - - - 0047320 - - - - - - - - - - - - - - - - * 0047360 376 001 \0 | 353 - - - - - - - - - - - 0047400 - - - - - - - - - - - - - - - - 0047420 - - - - - - \r a n d E n u m e 0047440 r a t e M a i l F i l e ( s t r 0047460 e a m , P r o c ) = v a l 0047500 o f \r / / - - - - - - - - - - - 0047520 - - - - - - - - - - - - - - - - * 0047620 - \r / / E n u m e r a t e s 0047640 a l l m s g s i n t h e 0047660 s t r e a m , c a l l i n g 0047700 P r o c f o r e a c h o n 0047720 e . \r / / R e t u r n s t r 0047740 u e i f t h e f i l e b 0047760 e h i n d 376 001 \0 * D s t r e a 0050000 m c a n b e d e l e t e d 0050020 . \r [ \r l e t d e l e t e = 0050040 t r u e \r l e t m s g = 0050060 v e c l e n M s g ; Z e r o 0050100 ( m s g , l e n M s g ) \r m s 0050120 g > > M s g . s t r e a m = 0050140 s t r e a m \r \r [ / / 0050160 r e a d n e x t m e s s a 0050200 g e i n f i l e \r S e 0050220 t F i l e P o s ( s t r e a m , 0050240 l v m s g > > M s g . p o s 0050260 E n d ) \r i f E n d o f 0050300 s ( s t r e a m ) b r e a k \r 0050320 \r / / i f t h e m e 0050340 s s a g e i s d a m a g e d 0050360 , s k i p i t . 376 001 \0 z 335 \r 0050400 i f R e a d B l o c k ( 0050420 s t r e a m , l v m s g > > 0050440 M s g . m h , l e n M H ) n 0050460 e l e n M H t h e n \r 0050500 [ i f d e b u g F l a 0050520 g t h e n I F S E r r o r ( 0050540 e c E o f I n H d r , m s g ) 0050560 ; b r e a k ] \r i f 0050600 m s g > > M s g . s e a l n e 0050620 m h S e a l t h e n \r 0050640 [ i f d e b u g F l a 0050660 g t h e n I F S E r r o r ( 0050700 e c B a d M s g S e a l , m s 0050720 g ) ; b r e a k ] \r i 0050740 f m s g > > M s g . n u m A c 0050760 t i v e e q 0 l o o p \r 376 0051000 001 \0 x e \r P r o c ( m s g 0051020 ) \r \r / / C h e c k l 0051040 o n g - t e r m t i m e o u t 0051060 a n d h a n d l e a n y 0051100 E x c e p t i o n b l o c k s 0051120 . \r l e t t i m e o u t 0051140 = v e c 1 ; M u l ( 0 , 0051160 3 6 0 0 , d e l i v e r y T 0051200 i m e o u t , t i m e o u t ) 0051220 \r D o u b l e A d d ( t i 0051240 m e o u t , l v m s g > > M 0051260 s g . d a t e ) \r l e t 0051300 n o w = v e c 1 ; R e a 0051320 d C a l e n d a r ( n o w ) \r 0051340 E n u m e r a t e M B ( m s 0051360 g , U n d e l i v , D o u b 0051400 l e U s 376 001 \0 / 317 c ( n o w , 0051420 t i m e o u t ) g e 0 ) \r \r 0051440 / / i f t h e r e i 0051460 s o n e , f i n i s h o f 0051500 f t h e u n d e l i v e r a 0051520 b l e m s g m s g \r i 0051540 f m s g > > M s g . u M s g 0051560 t h e n F i n i s h U n d e l 0051600 i v M s g ( m s g ) \r \r / 0051620 / r e w r i t e m e s s a g 0051640 e h e a d e r \r i f m 0051660 s g > > M s g . n u m A c t i v 0051700 e n e 0 t h e n d e l e 0051720 t e = f a l s e \r S e 0051740 t F i l e P o s ( s t r e a m , 0051760 l v m s g > > M s g . p o s 0052000 B e g i n ) \r 376 001 \0 \t X W 0052020 r i t e B l o c k ( s t r e a m 0052040 , l v m s g > > M s g . m h 0052060 , l e n M H ) \r ] r e 0052100 p e a t \r \r r e s u l t i s d 0052120 e l e t e \r ] \r \r / / - - - - - 0052140 - - - - - - - - - - - - - - - - * 0052240 - - - - - - - \r a n d U n d e 0052260 l i v ( m b , m s g , t i m 0052300 e o u t ) = v a l o f \r / / 0052320 - - - - - - - - - - - - - - - - * 0052400 - - - - - - - - - - - - - - 376 001 0052420 \0 \0 223 - - - - - - - - - - - - - 0052440 - \r / / C a l l e d f r o m 0052460 E n u m e r a t M B i n E 0052500 n u m e r a t e M a i l F i l e 0052520 . \r / / I f ' t i m e o u t 0052540 ' t h e n c o n v e r t s 0052560 a l l a c t i v e b l o c k 0052600 s i n t o e x c e p t i o n 0052620 b l o c k s . \r / / G e n e 0052640 r a t e s a n u n d e l i v 0052660 e r a b l e m e s s a g e m 0052700 e s s a g e f o r a l l e 0052720 x c e p t i o n b l o c k s . 0052740 \r [ \r l e t r e w r i t e , 0052760 t y p e = f a l s e , m b 0053000 > > M B . t y p e \r i f t i m 0053020 e o u 376 001 \0 & 025 t & t y p e 0053040 n e m b T y p e F r e e & 0053060 t y p e n e m b T y p e S 0053100 n d r & t y p e n e m b 0053120 T y p e E x c p t h e n \r 0053140 [ \r m b > > M B . t y p 0053160 e = m b T y p e E x c p \r 0053200 m b > > M N B . e c = e 0053220 c D e l i v e r y T i m e o u t 0053240 \r r e w r i t e = t r 0053260 u e \r ] \r i f m b > > M 0053300 B . t y p e n e m b T y p e 0053320 E x c p r e s u l t i s f a 0053340 l s e \r \r i f m s g > > M s g 0053360 . u M s g e q 0 t h e n 0053400 S t a r t U n d e l i v M s g ( 0053420 m s g ) \r i f 376 001 \0 313 213 m s g 0053440 > > M s g . u M s g n e 0 0053460 t h e n \r [ \r l e t 0053500 u S t r e a m = m s g > > 0053520 M s g . u M s g > > M s g . s t 0053540 r e a m \r P u t T e m p l 0053560 a t e ( u S t r e a m , " * N 0053600 $ S - " , l v m b > > M 0053620 N B . n a m e ) \r I F S P 0053640 r i n t E r r o r ( u S t r e a 0053660 m , m b > > M N B . e c ) \r 0053700 m b > > M B . t y p e = 0053720 m b T y p e F r e e \r r e 0053740 w r i t e = t r u e \r 0053760 ] \r \r r e s u l t i s r e w r 0054000 i t e \r ] \r \f \r / / - - - - - - 0054020 - - - - - - - - - - - - - 376 001 \0 0054040 323 027 - - - - - - - - - - - - - - 0054060 - - - - - - - - - - - - - - - - * 0054120 - - - - - - - - - - - \r a n d 0054140 E n u m e r a t e M B ( m s g , 0054160 P r o c , a r g ) b e \r / 0054200 / - - - - - - - - - - - - - - - 0054220 - - - - - - - - - - - - - - - - * 0054300 - - - - - - - - - - - - - \r / / 0054320 E n u m e r a t e s t h e 0054340 B l o c k s i n m s g c a 0054360 l l i n g P r o c f o r e 0054400 a c h o n e . \r / / I f P 0054420 r o c r e t u r n s t r u e 0054440 , 376 001 \0 023 006 t h e b l o c k 0054460 i s r e w r i t t e n . \r / 0054500 / C h a n g i n g t h e l 0054520 e n g t h o f t h e b l o 0054540 c k i s f o r b i d d e n . 0054560 \r [ \r l e t s t r e a m = 0054600 m s g > > M s g . s t r e a m \r 0054620 S e t F i l e P o s ( s t r e a 0054640 m , l v m s g > > M s g . p 0054660 o s B l k ) \r m s g > > M s g . 0054700 n u m A c t i v e = 0 \r l e 0054720 t m b = S y s A l l o c a 0054740 t e ( m a x L e n M B ) \r \r 0054760 [ \r l e t t h i s P o 0055000 s = v e c 1 ; F i l e P 0055020 o s ( s t r e a m , t h i s P 0055040 o s ) \r 376 001 \0 245 X i f D 0055060 o u b l e U s c ( t h i s P o s 0055100 , l v m s g > > M s g . p o 0055120 s T x t ) g e 0 b r e a k 0055140 \r R e a d M B ( m s g , 0055160 m b ) \r l e t n e x t P 0055200 o s = v e c 1 ; F i l e 0055220 P o s ( s t r e a m , n e x t 0055240 P o s ) \r t e s t P r o 0055260 c ( m b , m s g , a r g ) 0055300 / / r e w r i t e b l o c k 0055320 ? \r i f n o t S e 0055340 t F i l e P o s ( s t r e a m , 0055360 n e x t P o s ) / / P r o 0055400 c m a y h a v e c h a n g 0055420 e d s t r e a m p o s . \r 0055440 i f s o / 376 001 \0 244 0055460 ` / b a c k u p a n d r e 0055500 w r i t e t h e b l o c k \r 0055520 [ \r 0055540 S e t F i l e P o s ( s 0055560 t r e a m , t h i s P o s ) \r 0055600 W r i t e B l 0055620 o c k ( s t r e a m , m b , 0055640 m b > > M B . l e n g t h ) \r 0055660 ] \r u n l 0055700 e s s m b > > M B . t y p e 0055720 e q m b T y p e F r e e % 0055740 m b > > M B . t y p e e q m 0055760 b T y p e S n d r d o \r 0056000 m s g > > M s g . n u m A 0056020 c t i v e = m s g > > M s g 0056040 . n u m A c t i v e + 1 \r 0056060 376 001 \0 235 t ] r e p e a t \r \r 0056100 S y s F r e e ( m b ) \r ] \r \r / 0056120 / - - - - - - - - - - - - - - - 0056140 - - - - - - - - - - - - - - - - * 0056220 - - - - - - - - - - - - - \r a n 0056240 d R e a d M B ( m s g , m b 0056260 ; n u m a r g s n a ) = 0056300 v a l o f \r / / - - - - - - - - 0056320 - - - - - - - - - - - - - - - - * 0056420 - - - - \r [ \r l e t t e m p 0056440 = n i l \r R e a d B l o c k ( 0056460 m s g > > M 376 \0 327 264 s s g . s t 0056500 r e a m , l v t e m p , 1 0056520 ) \r i f n a l s 2 % m 0056540 b e q 0 t h e n m b = 0056560 S y s A l l o c a t e ( t e m 0056600 p < < M B . l e n g t h ) \r m b 0056620 ! 0 = t e m p \r i f R e a 0056640 d B l o c k ( m s g > > M s g . 0056660 s t r e a m , m b + 1 , m b 0056700 > > M B . l e n g t h - 1 ) n 0056720 e m b > > M B . l e n g t h - 0056740 1 t h e n \r I F S E r r 0056760 o r ( e c E o f I n B l k , m 0057000 s g ) \r r e s u l t i s m b \r 0057020 ] \r 377 \0 \0 I f s M a i l S o r t 0057040 . b c p l \0 373 230 " 241 1 \0 \0 376 001 \0 0057060 S 345 / / I f s M a i l S o r t 0057100 . b c p l - - S o r t s n 0057120 e w l y a r r i v e d m a i 0057140 l \r / / C o p y r i g h t X 0057160 e r o x C o r p o r a t i o n 0057200 1 9 7 9 , 1 9 8 0 , 1 9 8 0057220 1 \r / / L a s t m o d i f i 0057240 e d N o v e m b e r 1 8 , 0057260 1 9 8 1 9 : 3 1 A M b y 0057300 T a f t \r \r g e t " I f s . 0057320 d e c l " \r g e t " I f s D i 0057340 r s . d e c l " \r g e t " I f 0057360 s M a i l . d e c l " \r g e t 0057400 " I f s F i l e s . d e c l " \r 0057420 \r e x t e r n a l \r [ \r / / o 0057440 u t g o i n g p r o c e d u r 0057460 e \r 376 001 \0 360 M S o r t N e w M a 0057500 i l \r \r / / i n c o m i n g 0057520 p r o c e d u r e s f r o m 0057540 I F S D i r s \r D e s t r o y 0057560 F D ; I F S O p e n F i l e ; 0057600 O p e n I F S S t r e a m \r G 0057620 e t B u f f e r F o r F D ; L 0057640 o c k T r a n s f e r L e a d e 0057660 r P a g e \r \r / / i n c o m i 0057700 n g p r o c e d u r e s f r 0057720 o m d i s k s t r e a m s \r 0057740 W r i t e B l o c k ; C l o s 0057760 e s ; P u t s \r F i l e P o s 0060000 ; S e t F i l e P o s ; F i 0060020 l e L e n g t h \r \r / / i n c 0060040 o m i n g p r o c e d u r e s 0060060 f r o m o 376 001 \0 236 361 t h e r 0060100 m a i l m o d u l e s \r E n 0060120 u m e r a t e M a i l F i l e ; 0060140 E n u m e r a t e M B ; R e 0060160 a d M B ; W r i t e M N B \r C 0060200 h e c k N a m e ; M a i l S t 0060220 a t D e l a y ; D i s k T o D 0060240 i s k \r \r / / i n c o m i n g 0060260 p r o c e d u r e s - - m 0060300 i s c e l l a n e o u s \r S y s 0060320 A l l o c a t e Z e r o ; S y 0060340 s F r e e ; Z e r o ; M o v 0060360 e B l o c k ; U s c \r D o u b 0060400 l e S u b t r a c t ; D o u b 0060420 l e I n c r e m e n t ; M u l 0060440 t E q \r I F S E r r o r ; D e 0060460 q u e u e ; R e a d C 376 001 \0 335 0060500 ? a l e n d a r \r C o n c a t e 0060520 n a t e S t r i n g s ; S t r 0060540 i n g C o m p a r e ; E x t r 0060560 a c t S u b s t r i n g \r S e t 0060600 T i m e r ; T i m e r H a s E 0060620 x p i r e d ; D i s m i s s \r 0060640 L o c k C e l l ; U n l o c k 0060660 C e l l ; V F i l e R e a d P 0060700 a g e \r \r / / i n c o m i n g 0060720 s t a t i c s \r m a i l \r ] \r 0060740 \r \r / / - - - - - - - - - - - - 0060760 - - - - - - - - - - - - - - - - * 0061060 \r l e t S o r t N e w M a i l 0061100 ( 376 001 \0 237 \n s t r e a m ) = 0061120 E n u m e r a t e M a i l F i l 0061140 e ( s t r e a m , S o r t ) \r 0061160 / / - - - - - - - - - - - - - - 0061200 - - - - - - - - - - - - - - - - * 0061260 - - - - - - - - - - - - - - \r \r 0061300 / / - - - - - - - - - - - - - - 0061320 - - - - - - - - - - - - - - - - * 0061400 - - - - - - - - - - - - - - \r a 0061420 n d S o r t ( m s g ) b e \r 0061440 / / - - - - - - - - - - - - - - 0061460 - - - - - - - - - - - - - - - - 0061500 - - - - - - 376 001 \0 202 \ - - - - - 0061520 - - - - - - - - - - - - - - - - * 0061560 - - - \r [ \r D o u b l e I n c r 0061600 e m e n t ( l v m a i l > > M 0061620 a i l . m s g I D ) / / f o 0061640 r d u p l i c a t e s u p p 0061660 r e s s i o n \r \r / / D e l i 0061700 v e r c o p i e s t o l o 0061720 c a l m a i l b o x e s , a 0061740 n d b u i l d a l i s t 0061760 o f r e m o t e s e r v e r 0062000 s \r E n u m e r a t e M B ( m s 0062020 g , D e l i v e r L o c a l ) 0062040 \r \r / / Q u e u e c o p i e 0062060 s f o r f o r w a r d i n g 0062100 t o r e m o t e 376 001 \0 252 8 0062120 m a i l b o x e s \r [ \r 0062140 l e t h q i = D e q u 0062160 e u e ( l v m s g > > M s g . 0062200 h o s t Q ) ; i f h q i e 0062220 q 0 b r e a k \r i f 0062240 h q i > > H Q I . u s e d t h 0062260 e n D e l i v e r R e m o t e 0062300 ( m s g , h q i ) \r S y 0062320 s F r e e ( h q i ) \r ] 0062340 r e p e a t \r ] \r \f \r / / - - - 0062360 - - - - - - - - - - - - - - - - * 0062460 - - - - - - - - - \r a n d D e 0062500 l i v e r L o c a l ( m b , m 0062520 376 001 \0 o 311 s g ) = v a l o f 0062540 \r / / - - - - - - - - - - - - - 0062560 - - - - - - - - - - - - - - - - * 0062640 - - - - - - - - - - - - - - - \r 0062660 / / C a l l e d f r o m E 0062700 n u m e r a t e M B i n S o 0062720 r t . \r / / I f m b d e s 0062740 c r i b e s a l o c a l m 0062760 a i l b o x , t h e n a p p 0063000 e n d a c o p y o f m s 0063020 g t o i t . \r / / I f m 0063040 b d e s c r i b e s a r e 0063060 m o t e m a i l b o x , s k 0063100 i p i t . \r / / I f m b ' 0063120 s s y n 376 001 \0 ) 316 t a x i s 0063140 b a d o r i t r e f e r 0063160 e n c e s a n o n e x i s t 0063200 a n t l o c a l m a i l b o 0063220 x , \r / / t h e n c h a n 0063240 g e m b i n t o a n e x 0063260 c e p t i o n b l o c k . \r [ 0063300 \r i f m b > > M B . t y p e 0063320 n e m b T y p e M l b x r e 0063340 s u l t i s f a l s e \r \r l e 0063360 t f d = C h e c k N a m e 0063400 ( l v m b > > M N B . n a m e 0063420 , m s g , l v m b > > M N 0063440 B . e c , t r u e ) \r i f f 0063460 d e q 0 t h e n [ m b 0063500 > > M N B . t y p e = m b T 0063520 y p e E x c p ; r 376 001 \0 P 021 e 0063540 s u l t i s t r u e ] / 0063560 / b a d s y n t a x \r i f f 0063600 d e q - 1 t h e n \r 0063620 [ / / N o n - l o c a l 0063640 a n d c a n f o r w a r d . 0063660 \r / / R e s e t M N B 0063700 . e c i n c a s e l o c a 0063720 l m a i l b o x j u s t b 0063740 e c a m e n o n - l o c a l . 0063760 \r i f m b > > M N B . e 0064000 c n e 0 t h e n [ m b 0064020 > > M N B . e c = 0 ; r e 0064040 s u l t i s t r u e ] \r 0064060 r e s u l t i s f a l s e \r 0064100 ] \r \r / / M a i l b o x 0064120 i s l o c a l , c h e c 376 0064140 001 \0 253 \b k f o r d u p l i c 0064160 a t e s \r l e t i l d = G 0064200 e t B u f f e r F o r F D ( f d 0064220 ) \r i f L o c k T r a n s f e 0064240 r L e a d e r P a g e ( f d , 0064260 i l d ) e q 0 t h e n 0064300 / / r e a d \r [ \r 0064320 l e t f P r o p = i l d 0064340 + i l d > > L D . p r o p e r 0064360 t y B e g i n \r u n t i l 0064400 f P r o p > > F P R O P . t y 0064420 p e e q 0 % f P r o p > 0064440 > F P R O P . t y p e e q f 0064460 P r o p T y p e M s g I D d o 0064500 \r f P r o p = f 0064520 P r o p + f P r o p > > F P 0064540 R O P . 376 001 \0 355 \0 l e n g t h \r 0064560 i f i l d + i l d > > L 0064600 D . p r o p e r t y B e g i n + 0064620 i l d > > L D . p r o p e r t y 0064640 L e n g t h u l s \r f 0064660 P r o p + l e n F P r o p M s g 0064700 I D t h e n I F S E r r o r 0064720 ( e c L e a d e r P r o p s , 0064740 i l d ) \r i f f P r o p 0064760 > > F P R O P . t y p e e q 0065000 0 t h e n \r [ \r 0065020 f P r o p > > F P R O 0065040 P . t y p e = f P r o p T y 0065060 p e M s g I D \r f P 0065100 r o p > > F P R O P . l e n g t 0065120 h = l e n F P r o p M s g I 0065140 D \r Z 376 001 \0 002 350 e r 0065160 o ( l v f P r o p > > F P r o 0065200 p M s g I D . m s g I D , 2 ) 0065220 \r f P r o p ! l e n 0065240 F P r o p M s g I D = 0 \r 0065260 ] \r i f M u l 0065300 t E q ( l v f P r o p > > F P 0065320 r o p M s g I D . m s g I D , 0065340 l v m a i l > > M a i l . m s 0065360 g I D ) t h e n \r 0065400 [ / / d u p l i c a t e \r 0065420 S y s F r e e ( i l d 0065440 ) \r D e s t r o y F 0065460 D ( f d ) \r m b > > 0065500 M N B . t y p e = m b T y p 0065520 e F r e e \r r e s u 0065540 l t i s t r u e \r 376 001 0065560 \0 236 / ] \r M o v e B l 0065600 o c k ( l v f P r o p > > F P 0065620 r o p M s g I D . m s g I D , 0065640 l v m a i l > > M a i l . m s 0065660 g I D , 2 ) \r L o c k T 0065700 r a n s f e r L e a d e r P a g 0065720 e ( f d , i l d , t r u e ) 0065740 / / w r i t e \r ] \r 0065760 S y s F r e e ( i l d ) \r \r / / 0066000 t r y t o o p e n a s 0066020 t r e a m o n i t \r l e t 0066040 s t r e a m , e c = n i l 0066060 , n i l \r l e t t i m e r 0066100 = n i l ; S e t T i m e r ( 0066120 l v t i m e r , o p e n T i 0066140 m e o u t * 1 0 0 ) \r [ \r 0066160 376 001 \0 240 301 s t r e a m = 0066200 O p e n I F S S t r e a m ( f 0066220 d , l v e c , m o d e A p 0066240 p e n d ) \r i f s t r e 0066260 a m n e 0 % e c n e 0066300 e c F i l e B u s y % T i m 0066320 e r H a s E x p i r e d ( l v 0066340 t i m e r ) b r e a k \r 0066360 D i s m i s s ( 1 0 0 ) \r 0066400 ] r e p e a t \r i f s t r e 0066420 a m e q 0 t h e n \r 0066440 [ / / B u s y , t r y 0066460 a g a i n l a t e r \r D 0066500 e s t r o y F D ( f d ) \r 0066520 m b > > M N B . e c = e c F 0066540 i l e B u s y / / s o R 0066560 e m o t e R e c 376 001 \0 346 g i p i 0066600 e n t s w i l l s k i p o 0066620 v e r i t \r r e s u l t 0066640 i s t r u e \r ] \r \r / / 0066660 a p p e n d a c o p y o 0066700 f t h e m e s s a g e t o 0066720 i t \r F i n i s h A p p e n d 0066740 i n g M s g ( S t a r t A p p e 0066760 n d i n g M s g ( s t r e a m ) 0067000 , m s g ) \r m b > > M N B . t 0067020 y p e = m b T y p e F r e e 0067040 \r r e s u l t i s t r u e \r ] 0067060 \r \f \r / / - - - - - - - - - - - 0067100 - - - - - - - - - - - - - - - - * 0067160 - - - - - - - - - - - - - 376 001 \0 0067200 256 005 - - - - \r a n d D e l i v 0067220 e r R e m o t e ( i n M s g , 0067240 h q i , o u t M s g ) b e \r 0067260 / / - - - - - - - - - - - - - - 0067300 - - - - - - - - - - - - - - - - * 0067360 - - - - - - - - - - - - - - \r / 0067400 / G e n e r a t e s a m e 0067420 s s a g e f o r f o r w a r 0067440 d i n g t o h o s t . S 0067460 p e c i f i c a l l y , i t : 0067500 \r / / c o p i e s t h e 0067520 s e n d e r f r o m i n M 0067540 s g ; \r / / c o p i e s 0067560 r e c i p i e n t s w h o s e 0067600 r 376 001 \0 353 \f e g i s t r y m 0067620 a t c h e s h q i ; \r / / 0067640 c o p i e s t h e t e x t 0067660 o f i n M s g . \r / / C a 0067700 l l e r i s r e s p o n s i 0067720 b l e f o r e n s u r i n g 0067740 t h a t t h e r e i s a 0067760 t l e a s t o n e r e c i 0070000 p i e n t \r / / f o r t h e 0070020 s p e c i f i e d h o s t . 0070040 \r / / N o t e : i f h q i 0070060 i s t h e H Q I c o r r 0070100 e s p o n d i n g t o g v N 0070120 a m e , A L L r e m o t e 0070140 r e c i p i e n t s \r / / a r 0070160 e f o r w a r d e d t o t 0070200 h i s h o s 376 001 \0 q 352 t . 0070220 I n t h i s c a s e , a l 0070240 l t h e o t h e r H Q I s 0070260 w i l l \r / / n o t h a v 0070300 e h a d t h e i r H Q I . 0070320 u s e d b i t s s e t , s 0070340 o t h e H Q I f o r g v 0070360 N a m e i s t h e \r / / o 0070400 n l y o n e o n w h i c h 0070420 D e l i v e r R e m o t e w 0070440 i l l b e c a l l e d . \r / 0070460 / o u t M s g i s n ' t r 0070500 e a l l y a n a r g u m e n 0070520 t , j u s t a l o c a l . 0070540 I t s u p t h e r e s 0070560 o \r / / t h e c o m p i l 0070600 e r w i l l a l l o 376 001 \0 277 0070620 317 c a t e i t a f t e r ' 0070640 h q i ' , w h i c h i s c 0070660 o n v e n i e n t \r / / w h 0070700 e n c a l l i n g R e m o t 0070720 e R e c i p i e n t s v i a 0070740 E n u m e r a t e M B , b e l 0070760 o w . \r [ \r / / t r y t o 0071000 o p e n a f o r w a r d i n 0071020 g f i l e \r l e t f i l e N 0071040 a m e = C o n c a t e n a t 0071060 e S t r i n g s ( " < M a i l > 0071100 F w d > " , l v h q i > > H 0071120 Q I . n a m e ) \r l e t o u t 0071140 S t r e a m = I F S O p e n 0071160 F i l e ( f i l e N a m e , 0 0071200 , m o d e A p p e n d ) \r S y 0071220 s 376 001 \0 344 342 F r e e ( f i l e N 0071240 a m e ) \r i f o u t S t r e a 0071260 m e q 0 r e t u r n \r \r / 0071300 / a p p e n d t o f o r w 0071320 a r d i n g f i l e \r o u t M 0071340 s g = S t a r t A p p e n d 0071360 i n g M s g ( o u t S t r e a m 0071400 ) \r \r / / g e n e r a t e t 0071420 h e s e n d e r \r S e t F i l 0071440 e P o s ( i n M s g > > M s g . 0071460 s t r e a m , l v i n M s g 0071500 > > M s g . p o s S n d r ) \r l 0071520 e t m b = R e a d M B ( i 0071540 n M s g ) \r W r i t e M N B ( o 0071560 u t M s g , m b T y p e S n d 0071600 r , l v m b > > M N B . n a 0071620 m e ) \r S y 376 001 \0 310 7 s F r e e 0071640 ( m b ) \r \r / / g e n e r a t 0071660 e t h e l i s t o f r e 0071700 c i p i e n t s \r E n u m e r a 0071720 t e M B ( i n M s g , R e m o 0071740 t e R e c i p i e n t s , l v 0071760 h q i ) \r \r / / C o p y m 0072000 e s s a g e t e x t , c l o 0072020 s e o u t M s g . \r F i n i s 0072040 h A p p e n d i n g M s g ( o u 0072060 t M s g , i n M s g ) \r / / 0072100 d o n ' t s e t M a i l . w 0072120 o r k T o D o s i n c e t h 0072140 e f o r w a r d e r w i l l 0072160 r u n n e x t a n y w a y 0072200 \r ] \r \r / / - - - - - - - - - - 0072220 - - - - - - - - - - - 376 001 \0 % I 0072240 - - - - - - - - - - - - - - - - * 0072320 - - - - - - - \r a n d R e m o 0072340 t e R e c i p i e n t s ( m b , 0072360 i n M s g , a r g s ) = 0072400 v a l o f \r / / - - - - - - - - 0072420 - - - - - - - - - - - - - - - - * 0072520 - - - - \r / / C a l l e d f 0072540 r o m E n u m e r a t e M B 0072560 i n D e l i v e r R e m o t e 0072600 . \r / / C o p i e s m a i l 0072620 b o x b l o c k s f r o m 0072640 376 001 \0 M A i n M s g t o o u 0072660 t M s g . \r / / M a r k s t 0072700 h e m a i l b o x b l o c k 0072720 s i n i n M s g f r e e . 0072740 \r / / a r g s ! 0 - > h q 0072760 i , a r g s ! 1 - > o u t 0073000 M s g \r [ \r l e t h q i , o 0073020 u t M s g = a r g s ! 0 , 0073040 a r g s ! 1 \r i f m b > > M N 0073060 B . t y p e n e m b T y p e 0073100 M l b x % m b > > M N B . e 0073120 c n e 0 r e s u l t i s 0073140 f a l s e \r \r / / A p p e n d 0073160 e n t r y i f h q i c o 0073200 r r e s p o n d s t o g v N 0073220 a m e o r r e g i s t r y 0073240 m a t c h 376 001 \0 D 035 e s h q i 0073260 . n a m e . \r i f h q i n e 0073300 i n M s g > > M s g . g v H Q 0073320 I t h e n \r [ \r l 0073340 e t n a m e , d o t = l 0073360 v m b > > M N B . n a m e , 0073400 0 \r f o r i = n a m 0073420 e > > S t r i n g . l e n g t h 0073440 t o 1 b y - 1 d o \r 0073460 i f n a m e > > S t 0073500 r i n g . c h a r ^ i e q $ 0073520 . t h e n [ d o t = i 0073540 ; b r e a k ] \r i f 0073560 S t r i n g C o m p a r e ( n a 0073600 m e , l v h q i > > H Q I . 0073620 n a m e , d o t + 1 ) n e 0073640 0 r e s u l t i s 376 001 \0 177 334 0073660 f a l s e \r ] \r \r W r i t 0073700 e M N B ( o u t M s g , m b T 0073720 y p e M l b x , l v m b > > 0073740 M N B . n a m e ) \r m b > > M N 0073760 B . t y p e = m b T y p e F 0074000 r e e \r r e s u l t i s t r u 0074020 e \r ] \r \f \r / / T h e s e t 0074040 w o p r o c e d u r e s p e 0074060 r f o r m t h e m e c h a n 0074100 i c a l a s p e c t s o f 0074120 a p p e n d i n g \r / / n e 0074140 w m e s s a g e s t o m e 0074160 s s a g e f i l e s . T h 0074200 e y a r e u s e d b y : \r 0074220 / / D e l i v e r L o c a 0074240 l o n l o c a l m a i l 376 0074260 001 \0 d 025 b o x e s , a n d 0074300 b y \r / / D e l i v e r R 0074320 e m o t e o n f o r w a r d 0074340 f i l e s f o r r e m o t 0074360 e m a i l s y s t e m s . \r 0074400 \r / / - - - - - - - - - - - - - 0074420 - - - - - - - - - - - - - - - - * 0074500 - - - - - - - - - - - - - - - \r 0074520 a n d S t a r t A p p e n d i 0074540 n g M s g ( o u t S t r e a m ) 0074560 = v a l o f \r / / - - - - - 0074600 - - - - - - - - - - - - - - - - * 0074660 - - - - 376 001 \0 356 B - - - - - - - 0074700 - - - - - - - - - - - - \r / / 0074720 C r e a t e s a n d r e t u 0074740 r n s a n M s g f o r a 0074760 p p e n d i n g t o o u t S 0075000 t r e a m . \r [ \r l e t o u t 0075020 M s g = S y s A l l o c a t 0075040 e Z e r o ( l e n M s g ) \r o u 0075060 t M s g > > M s g . s t r e a m 0075100 = o u t S t r e a m \r F i l 0075120 e P o s ( o u t S t r e a m , 0075140 l v o u t M s g > > M s g . p 0075160 o s B e g i n ) \r W r i t e B l 0075200 o c k ( o u t S t r e a m , l 0075220 v o u t M s g > > M s g . m h 0075240 , l e n M H ) \r F i l e P o s 0075260 ( o u t S t r e a 376 001 \0 \ 307 m , 0075300 l v o u t M s g > > M s g . 0075320 p o s B l k ) \r F i l e P o s ( 0075340 o u t S t r e a m , l v o u 0075360 t M s g > > M s g . p o s T x t 0075400 ) \r r e s u l t i s o u t M s 0075420 g \r ] \r \r / / - - - - - - - - - 0075440 - - - - - - - - - - - - - - - - * 0075540 - - - \r a n d F i n i s h A p 0075560 p e n d i n g M s g ( o u t M s 0075600 g , i n M s g ) = v a l o 0075620 f \r / / - - - - - - - - - - - - 0075640 - - - - - - - - - - - - - - - - 0075660 - - - - - - - - - - - - - - 376 001 0075700 \0 # b - - - - - - - - - - - - - 0075720 - - - - - - - - - - - - - - - - 0075740 - - - - - \r / / F i n i s h e 0075760 s a p p e n d i n g i n M s 0076000 g t o o u t M s g - - c 0076020 o p i e s t h e t e x t , 0076040 f i n i s h e s t h e \r / / 0076060 h e a d e r , c l o s e s 0076100 t h e s t r e a m , a n d 0076120 d e s t r o y s o u t M s g . 0076140 \r [ \r l e t o u t S t r e a m 0076160 = o u t M s g > > M s g . s 0076200 t r e a m \r l e t i n S t r e 0076220 a m = i n M s g > > M s g . 0076240 s t r e a m \r S e t F i l e P o 0076260 s ( i n S t r e a m , l v i 0076300 n M s 376 001 \0 % 202 g > > M s g . p 0076320 o s T x t ) \r M o v e B l o c k 0076340 ( l v o u t M s g > > M s g . 0076360 l e n T x t , l v i n M s g 0076400 > > M s g . l e n T x t , 2 ) 0076420 \r D i s k T o D i s k ( o u t S 0076440 t r e a m , i n S t r e a m , 0076460 l v o u t M s g > > M s g . 0076500 l e n T x t ) \r M o v e B l o c 0076520 k ( l v o u t M s g > > M s g 0076540 . l e n T x t , l v i n M s 0076560 g > > M s g . l e n T x t , 2 0076600 ) \r i f ( F i l e P o s ( o u 0076620 t S t r e a m , l v o u t M 0076640 s g > > M s g . p o s E n d ) 0076660 & 1 ) e q 1 t h e n \r 0076700 [ \r P 376 001 \0 263 241 u t s 0076720 ( o u t S t r e a m , 0 ) 0076740 / / p a d t o w o r d b o 0076760 u n d a r y \r D o u b l e 0077000 I n c r e m e n t ( l v o u t 0077020 M s g > > M s g . p o s E n d ) 0077040 \r ] \r R e a d C a l e n d 0077060 a r ( l v o u t M s g > > M s 0077100 g . d a t e ) \r S e t F i l e P 0077120 o s ( o u t S t r e a m , l v 0077140 o u t M s g > > M s g . p o s 0077160 B e g i n ) \r o u t M s g > > M 0077200 s g . v e r s i o n = m h V 0077220 e r s i o n \r o u t M s g > > M 0077240 s g . s e a l = m h S e a l 0077260 \r W r i t e B l o c k ( o u t S 0077300 t r e a m , l v o u t 376 \0 327 0077320 210 \f M s g > > M s g . m h , l 0077340 e n M H ) \r F i l e L e n g t h 0077360 ( o u t S t r e a m ) / / s 0077400 o C l o s e s d o e s n ' t 0077420 t r u n c a t e \r C l o s e s 0077440 ( o u t S t r e a m ) \r \r / / 0077460 t i m e i n s e c o n d s 0077500 m s g w a i t e d i n < M 0077520 a i l > N e w > M a i l \r M a i 0077540 l S t a t D e l a y ( m s T y p 0077560 e S o r t , l v i n M s g > 0077600 > M s g . d a t e ) \r \r S y s F 0077620 r e e ( o u t M s g ) \r r e s u 0077640 l t i s 0 \r ] \r 377 \0 \0 I f s M 0077660 a i l F o r w a r d . b c p l \0 0077700 373 233 224 306 1 \0 \0 376 001 \0 C 002 / / I 0077720 f s M a i l F o r w a r d . b c 0077740 p l - - F o r w a r d s m 0077760 a i l t o o t h e r m a i 0100000 l s y s t e m s \r / / C o p 0100020 y r i g h t X e r o x C o r 0100040 p o r a t i o n 1 9 7 9 , 1 0100060 9 8 0 , 1 9 8 1 , 1 9 8 2 \r 0100100 / / L a s t m o d i f i e d 0100120 S e p t e m b e r 1 8 , 1 0100140 9 8 3 1 : 4 1 P M b y 0100160 T a f t \r \r g e t " I f s D i 0100200 r s . d e c l " \r g e t " I f 0100220 s F i l e s . d e c l " \r g e t 0100240 " I f s M a i l . d e c l " \r 0100260 g e t " I f s F t p P r o t . 0100300 d e c l " \r g e t l e 376 001 \0 023 0100320 243 n P o r t f r o m " P u p 0100340 0 . d e c l " \r g e t " I f s 0100360 N a m e . d e c l " \r \r e x t e 0100400 r n a l \r [ \r / / o u t g o i 0100420 n g p r o c e d u r e \r F o r 0100440 w a r d M a i l \r \r / / i n c 0100460 o m i n g p r o c e d u r e s 0100500 f r o m P u p p a c k a g 0100520 e \r O p e n L e v e l 1 S o c k 0100540 e t ; C l o s e L e v e l 1 S 0100560 o c k e t \r O p e n R T P S o c 0100600 k e t ; C l o s e R T P S o c 0100620 k e t \r C r e a t e B S P S t r 0100640 e a m \r \r / / i n c o m i n g 0100660 p r o c e d u r e s f r o m 0100700 F t p p a c k a g e \r U s e 0100720 r 376 001 \0 177 ) O p e n ; U s e r 0100740 C l o s e ; U s e r S t o r e 0100760 M a i l \r I n i t P L i s t ; 0101000 F r e e P L i s t ; F l i p C 0101020 u r s o r ; D i s k T o N e t 0101040 ; F t p S S e n d M a r k \r \r 0101060 / / i n c o m i n g p r o c 0101100 e d u r e s f r o m o t h e 0101120 r m a i l m o d u l e s \r E 0101140 n u m e r a t e M a i l F i l e 0101160 ; E n u m e r a t e M B ; R 0101200 e a d M B ; M a i l S t a t D 0101220 e l a y \r S t a r t U n d e l i 0101240 v M s g ; F i n i s h M s g \r 0101260 \r / / i n c o m i n g p r o 0101300 c e d u r e s f r o m S t r 0101320 e a m s p 376 001 \0 030 357 a c k a g 0101340 e \r F i l e P o s ; S e t F i 0101360 l e P o s ; W r i t e B l o c 0101400 k \r \r / / i n c o m i n g p 0101420 r o c e d u r e s - - m i s 0101440 c e l l a n e o u s \r I F S E r 0101460 r o r ; E n u m e r a t e P u 0101500 p A d d r e s s e s ; I F S P 0101520 r i n t E r r o r ; S t r e a 0101540 m s F D \r S y s A l l o c a t e 0101560 ; S y s F r e e ; F r e e P 0101600 o i n t e r ; Z e r o ; M o 0101620 v e B l o c k ; N o o p \r D o 0101640 u b l e U s c ; D e c l a r e 0101660 P u p S o c \r E x t r a c t S u 0101700 b s t r i n g ; P u t T e m p 0101720 l a t e \r \r / / i n 376 001 \0 X 027 0101740 c o m i n g s t a t i c s \r C 0101760 t x R u n n i n g ; d e b u g 0102000 F l a g \r d F T P I ; l B S P 0102020 S o c ; m a i l \r ] \r \f \r / / 0102040 - - - - - - - - - - - - - - - - * 0102140 - - - - - - - - - - - - \r l e t 0102160 F o r w a r d M a i l ( s t r 0102200 e a m ) = v a l o f \r / / - 0102220 - - - - - - - - - - - - - - - - * 0102320 - - - - - - - - - - - \r / / s 0102340 376 001 \0 $ R t r e a m i s o p 0102360 e n o n a f i l e c o n 0102400 t a i n i n g m e s s a g e s 0102420 q u e u e d f o r d e l i 0102440 v e r y t o a \r / / r e 0102460 m o t e h o s t . F o r w 0102500 a r d M a i l t r i e s t o 0102520 o p e n a n M T P c o n 0102540 n e c t i o n t o t h e h 0102560 o s t \r / / a n d s e n d 0102600 t h e m a i l . R e t u 0102620 r n s t r u e i f t h e 0102640 f i l e b e h i n d s t r e 0102660 a m c a n b e d e l e t e 0102700 d . \r / / s t r e a m i s 0102720 e n u m e r a t e d e v e n 0102740 i f f o 376 001 \0 220 204 r w a r d i 0102760 n g i s d i s a b l e d s 0103000 o t h a t \r / / d e l i v 0103020 e r y t i m e o u t s c a n 0103040 b e d e t e c t e d . \r [ \r 0103060 l e t s o c = 0 \r i f m 0103100 a i l > > M a i l . f o r w a r 0103120 d n e 0 t h e n \r [ 0103140 \r / / e x t r a c t r 0103160 e g i s t r y n a m e f r o 0103200 m f i l e n a m e \r l 0103220 e t f d = S t r e a m s F 0103240 D ( s t r e a m ) \r l e t 0103260 h o s t = E x t r a c t S 0103300 u b s t r i n g ( l v f d > > 0103320 F D . d r > > D R . p a t h N a 0103340 m e , \r f d 376 001 \0 330 P > 0103360 > F D . l e n S u b D i r S t r 0103400 i n g + 1 , f d > > F D . l e 0103420 n B o d y S t r i n g - 1 ) \r \r 0103440 / / f o r r e g i s t 0103460 r i e s t h a t m a p t o 0103500 m u l t i p l e a d d r e s 0103520 s e s , t r y e a c h o n 0103540 e i n o r d e r \r / / 0103560 o f d i s t a n c e f r o 0103600 m h e r e . \r E n u m e 0103620 r a t e P u p A d d r e s s e s 0103640 ( h o s t , F w d O p e n C o 0103660 n n ) \r S y s F r e e ( h 0103700 o s t ) \r s o c = C t 0103720 x R u n n i n g > > F t p C t x 0103740 . b s p S o c \r i f s 376 0103760 001 \0 363 A o c n e 0 t h e n 0104000 \r [ \r C 0104020 t x R u n n i n g > > F t p C t 0104040 x . b s p S t r e a m = C r 0104060 e a t e B S P S t r e a m ( s o 0104100 c ) \r C t x R u n n 0104120 i n g > > F t p C t x . d s p S 0104140 t r e a m = d F T P I > > F 0104160 T P I . d s p S t r e a m \r 0104200 C t x R u n n i n g > > 0104220 F t p C t x . l s t = d F T 0104240 P I > > F T P I . l s t \r 0104260 C t x R u n n i n g > > F 0104300 t p C t x . d l s = d F T P 0104320 I > > F T P I . d l s \r 0104340 C t x R u n n i n g > > F t 0104360 p C t x 376 001 \0 016 301 . d b l s = 0104400 C t x R u n n i n g > > F t p 0104420 C t x . b s p S t r e a m \r 0104440 U s e r O p e n ( N o o 0104460 p ) \r ] \r ] \r 0104500 \r / / d o t h e w o r k \r 0104520 l e t d e l e t e = E n u 0104540 m e r a t e M a i l F i l e ( s 0104560 t r e a m , F o r w a r d ) \r 0104600 \r / / C l e a n u p n e t 0104620 w o r k s t u f f \r i f s o 0104640 c n e 0 t h e n \r [ 0104660 \r i f C t x R u n n i n 0104700 g > > F t p C t x . c o n n F l 0104720 a g t h e n U s e r C l o s 0104740 e ( f a l s e ) \r D e c l 0104760 a r e P u p S o c 376 001 \0 6 340 ( 0 0105000 ) \r S y s F r e e ( s o c 0105020 ) \r ] \r \r r e s u l t i s 0105040 d e l e t e \r ] \r \r / / - - - 0105060 - - - - - - - - - - - - - - - - * 0105160 - - - - - - - - - \r a n d F w 0105200 d O p e n C o n n ( p o r t , 0105220 n i l ) = v a l o f \r / / - 0105240 - - - - - - - - - - - - - - - - * 0105340 - - - - - - - - - - - \r / / P 0105360 r o c p a s s e d t o 376 001 0105400 \0 243 E E n u m e r a t e P u p A 0105420 d d r e s s e s - - a t t e 0105440 m p t s t o c o n n e c t 0105460 t o e a c h \r / / p o r t 0105500 u n t i l o n e s u c c e e 0105520 d s . \r [ \r l e t s o c = 0105540 S y s A l l o c a t e ( l B S P 0105560 S o c ) \r O p e n L e v e l 1 S 0105600 o c k e t ( s o c , 0 , p o 0105620 r t ) \r D e c l a r e P u p S o 0105640 c ( s o c ) / / p u t s 0105660 s o c i n C t x R u n n i n 0105700 g > > F t p C t x . b s p S o c 0105720 \r i f O p e n R T P S o c k e 0105740 t ( s o c ) r e s u l t i s 0105760 t r u e / / s u c c e e d 0106000 e d , 376 001 \0 004 252 s t o p e n 0106020 u m e r a t i o n \r \r / / f a 0106040 i l e d , c l e a n u p a 0106060 n d c o n t i n u e \r C l o s 0106100 e L e v e l 1 S o c k e t ( s o 0106120 c ) \r D e c l a r e P u p S o c 0106140 ( 0 ) \r S y s F r e e ( s o c ) 0106160 \r r e s u l t i s f a l s e \r 0106200 ] \r \f \r / / - - - - - - - - - - 0106220 - - - - - - - - - - - - - - - - * 0106320 - - \r a n d F o r w a r d ( m 0106340 s g ) b e \r / / - - - - - - - 0106360 - - - - - - - - - - - - - - - - 0106400 - - - - - - - - 376 001 \0 g 301 - - - 0106420 - - - - - - - - - - - - - - - - * 0106460 - - - - - - - - - - \r / / C a 0106500 l l e d f r o m E n u m e r 0106520 a t e M a i l F i l e i n F 0106540 o r w a r d M a i l . \r / / C 0106560 a l l s t h e M T P m o d 0106600 u l e t o s e n d m e s s 0106620 a g e s t o r e m o t e s 0106640 i t e s . \r [ \r i f C t x R u 0106660 n n i n g > > F t p C t x . c o 0106700 n n F l a g t h e n \r [ 0106720 \r C t x R u n n i n g > > 0106740 F t p C t x . m s g = m s g 0106760 \r l e t m a r k = U 0107000 s e r S t o r e M a i l ( 376 001 \0 0107020 \a P F w d G e n , F w d E x c 0107040 p , F w d X f e r ) \r i 0107060 f m a r k e q 0 t h e n 0107100 \r [ / / M T P 0107120 c a t a s t r o p h e - u 0107140 n d o e v e r y t h i n g \r 0107160 i f C t x R u n n i 0107200 n g > > F t p C t x . c o n n F 0107220 l a g t h e n U s e r C l o 0107240 s e ( t r u e ) \r i 0107260 f m s g > > M s g . u M s g 0107300 t h e n \r m s 0107320 g > > M s g . u M s g = F i 0107340 n i s h M s g ( m s g > > M s g 0107360 . u M s g , 0 ) \r 0107400 ] \r E n u m e r a t e M B 0107420 ( m 376 001 \0 303 033 s g , F w d F r 0107440 e e , m a r k ) \r i f 0107460 m a r k < < M a r k . m a r k 0107500 e q m a r k Y e s t h e n \r 0107520 M a i l S t a t D e 0107540 l a y ( m s T y p e F w d , l 0107560 v m s g > > M s g . d a t e ) 0107600 \r ] \r ] \r \f \r / / - - - - 0107620 - - - - - - - - - - - - - - - - * 0107720 - - - - - - - - \r a n d F w d 0107740 G e n ( p l ) = v a l o f \r 0107760 / / - - - - - - - - - - - - - - 0110000 - - - - - - - - - - - - - - - - 0110020 - - - - - - - 376 001 \0 + 242 - - - - 0110040 - - - - - - - - - - - - - - - - * 0110100 - - - \r / / C a l l e d f r 0110120 o m U s e r S t o r e M a i l 0110140 , g e n e r a t e s t h e 0110160 n e x t r e c i p i e n t p 0110200 l . \r / / T h e s e n d e r 0110220 i s i n c l u d e d i n 0110240 t h e f i r s t p l o n l 0110260 y . \r [ \r l e t m s g = C 0110300 t x R u n n i n g > > F t p C t 0110320 x . m s g \r l e t s t r e a m 0110340 = m s g > > M s g . s t r e 0110360 a m \r \r l e t m b , s n d r 0110400 , m l b x = S y s A l l o 0110420 c a t e ( m a x L e n M 376 001 \0 M 0110440 C B ) , 0 , 0 \r i f p l 0110460 e q 0 t h e n / / f i r 0110500 s t t i m e - - g e n e r 0110520 a t e S n d r p r o p e r t 0110540 y \r [ \r S e t F i l 0110560 e P o s ( s t r e a m , l v 0110600 m s g > > M s g . p o s S n d r 0110620 ) \r R e a d M B ( m s g , 0110640 m b ) \r s n d r = E 0110660 x t r a c t S u b s t r i n g ( 0110700 l v m b > > M N B . n a m e ) 0110720 \r S e t F i l e P o s ( s 0110740 t r e a m , l v m s g > > M 0110760 s g . p o s B l k ) \r ] \r 0111000 \r [ / / g e n e r a t 0111020 e n e x t M l b x \r l 0111040 e 376 001 \0 " 357 t p o s = v e 0111060 c 1 ; F i l e P o s ( s t r 0111100 e a m , p o s ) \r i f 0111120 D o u b l e U s c ( p o s , l 0111140 v m s g > > M s g . p o s T x 0111160 t ) g e 0 b r e a k \r 0111200 R e a d M B ( m s g , m b ) 0111220 \r i f m b > > M B . t y 0111240 p e n e m b T y p e M l b x 0111260 l o o p \r m l b x = 0111300 E x t r a c t S u b s t r i n g 0111320 ( l v m b > > M N B . n a m e 0111340 ) \r b r e a k \r ] 0111360 r e p e a t \r S y s F r e e ( m 0111400 b ) \r \r p l = F r e e P L i 0111420 s t ( p l ) \r t e s t m l b x 0111440 e q 0 \r 376 001 \0 343 < i f 0111460 s o i f s n d r n e 0 0111500 t h e n S y s F r e e ( s n d 0111520 r ) \r i f n o t \r 0111540 [ \r p l = I 0111560 n i t P L i s t ( ) \r 0111600 p l > > P L . S N D R = s 0111620 n d r \r p l > > P L 0111640 . M L B X = m l b x \r 0111660 ] \r \r r e s u l t i s p 0111700 l \r ] \r \f \r / / - - - - - - - - 0111720 - - - - - - - - - - - - - - - - * 0112020 - - - - \r a n d F w d E x c p 0112040 ( m a r k , i n d e 376 001 \0 035 1 0112060 x ) b e \r / / - - - - - - - - 0112100 - - - - - - - - - - - - - - - - * 0112200 - - - - \r / / C a l l e d f 0112220 r o m U s e r S t o r e M a i 0112240 l t o a n n o u n c e r e 0112260 j e c t i o n o f m a i l b 0112300 o x ' i n d e x ' . \r / / I 0112320 t f i n d s t h e m a i l 0112340 b o x b l o c k , m a r k s 0112360 i t f r e e , a n d c o 0112400 p i e s t h e r e j e c t i 0112420 o n \r / / t e x t f r o m 0112440 t h e r e m o t e s e r v 0112460 376 001 \0 202 206 e r i n t o a n 0112500 u n d e l i v e r a b l e m s 0112520 g m s g . \r / / I f i t 0112540 c a n ' t c r e a t e a n 0112560 u n d e l i v e r a b l e m s 0112600 g m s g , t h e n i t c 0112620 h a n g e s t h e \r / / m 0112640 a i l b o x b l o c k i n t 0112660 o a n e x c e p t i o n , 0112700 i n t h e h o p e t h a t 0112720 l a t e r o n i t \r / / 0112740 w i l l b e a b l e t o 0112760 c r e a t e o n e . \r [ \r l 0113000 e t m s g = C t x R u n n 0113020 i n g > > F t p C t x . m s g \r 0113040 l e t d i s k S t r e a m = 0113060 m s g > 376 001 \0 W 222 > M s g . s 0113100 t r e a m \r \r / / i f w e 0113120 d o n ' t h a v e a n u n 0113140 d e l i v e r a b l e m e s s 0113160 a g e s e t u p , d o s 0113200 o \r i f m s g > > M s g . u M 0113220 s g e q 0 t h e n \r 0113240 [ \r S t a r t U n d e l i 0113260 v M s g ( m s g ) \r C t x 0113300 R u n n i n g > > F t p C t x . 0113320 i n d e x = 7 7 7 7 7 b \r 0113340 ] \r \r / / d o w e h a 0113360 v e t o b a c k u p a n 0113400 d s c a n f o r w a r d ? \r 0113420 i f C t x R u n n i n g > > F 0113440 t p C t x . i n d e x g r i 0113460 n d e x t h e n \r 376 001 \0 \v 360 0113500 [ \r S e t F i l e P o 0113520 s ( d i s k S t r e a m , l v 0113540 m s g > > M s g . p o s B l k 0113560 ) \r C t x R u n n i n g > 0113600 > F t p C t x . i n d e x = 0113620 0 \r ] \r \r / / f i n d 0113640 t h e o f f e n d i n g m a 0113660 i l b o x b l o c k \r l e t 0113700 m b , p o s = S y s A l l 0113720 o c a t e ( m a x L e n M B ) , 0113740 v e c 1 \r [ \r F 0113760 i l e P o s ( d i s k S t r e a 0114000 m , p o s ) \r i f D o 0114020 u b l e U s c ( p o s , l v 0114040 m s g > > M s g . p o s T x t ) 0114060 g e 0 t h e n \r 376 0114100 001 \0 375 020 [ / / i n d e x 0114120 s u p p l i e d b y r e m 0114140 o t e s e r v e r i s b o 0114160 g u s \r i f d e b 0114200 u g F l a g t h e n I F S E 0114220 r r o r ( e c M l b x I n d e x 0114240 , i n d e x , m s g ) \r 0114260 C t x R u n n i n g > > 0114300 F t p C t x . i n d e x = 7 0114320 7 7 7 7 b / / f o r c e a 0114340 b a c k u p \r S y 0114360 s F r e e ( m b ) \r 0114400 r e t u r n \r ] \r 0114420 R e a d M B ( m s g , m b 0114440 ) \r i f m b > > M B . t 0114460 y p e n e m b T y p e M l b 0114500 x & 376 001 \0 241 226 m b > > M B . 0114520 t y p e n e m b T y p e T e 0114540 m p F r e e & \r m b > 0114560 > M B . t y p e n e m b T y 0114600 p e T e m p E x c p l o o p \r 0114620 C t x R u n n i n g > > F 0114640 t p C t x . i n d e x = C t 0114660 x R u n n i n g > > F t p C t x 0114700 . i n d e x + 1 \r i f 0114720 C t x R u n n i n g > > F t p C 0114740 t x . i n d e x e q i n d e 0114760 x b r e a k \r ] r e p 0115000 e a t \r \r / / g e n e r a t e 0115020 t h e m a i l b o x n a m 0115040 e a n d e r r o r t e x t 0115060 \r t e s t m s g > > M s g . u 0115100 M s g n e 0 \r 376 001 \0 375 227 0115120 i f s o \r [ \r 0115140 P u t T e m p l a t e ( 0115160 m s g > > M s g . u M s g > > M 0115200 s g . s t r e a m , " * N $ S 0115220 - $ S " , \r l 0115240 v m b > > M N B . n a m e , 0115260 C t x R u n n i n g > > F t p C 0115300 t x . g e t C m d S t r i n g ) 0115320 \r m b > > M B . t y 0115340 p e = m b T y p e T e m p F 0115360 r e e \r ] \r i 0115400 f n o t \r [ \r 0115420 m b > > M N B . e c = 0115440 e c U n s p e c i f i e d \r 0115460 m b > > M B . t y p e 0115500 = m b T y p e T e m p E x 376 001 0115520 \0 247 032 c p \r ] \r \r S 0115540 e t F i l e P o s ( d i s k S t 0115560 r e a m , p o s ) \r W r i t e 0115600 B l o c k ( d i s k S t r e a m 0115620 , m b , m b > > M B . l e n 0115640 g t h ) \r S y s F r e e ( m b ) 0115660 \r ] \r \f \r / / - - - - - - - - - 0115700 - - - - - - - - - - - - - - - - * 0116000 - - - \r a n d F w d X f e r ( 0116020 ) = v a l o f \r / / - - - - 0116040 - - - - - - - - - - - - - - - - * 0116120 - - - 376 001 \0 270 302 - - - - - - - - 0116140 - - - - - - - - - - - - - \r / / 0116160 M o v e s t h e m e s s a 0116200 g e t e x t o v e r t h e 0116220 c o n n e c t i o n . \r [ \r l 0116240 e t m s g = C t x R u n n 0116260 i n g > > F t p C t x . m s g \r 0116300 l e t d i s k S t r e a m = 0116320 m s g > > M s g . s t r e a m 0116340 \r l e t b y t e s = v e c 0116360 1 ; M o v e B l o c k ( b y 0116400 t e s , l v m s g > > M s g 0116420 . l e n T x t , 2 ) \r S e t F 0116440 i l e P o s ( d i s k S t r e a 0116460 m , l v m s g > > M s g . p 0116500 o s T x t ) \r l e t e c = 0116520 D i s k T o N e 376 001 \0 | 214 t ( C 0116540 t x R u n n i n g > > F t p C t 0116560 x . b s p S t r e a m , d i s 0116600 k S t r e a m , b y t e s ) \r 0116620 r e s u l t i s e c ? F t p 0116640 S S e n d M a r k ( m a r k N o 0116660 , e c ) , t r u e \r ] \r \r / 0116700 / - - - - - - - - - - - - - - - 0116720 - - - - - - - - - - - - - - - - * 0117000 - - - - - - - - - - - - - \r a n 0117020 d F w d F r e e ( m b , m s 0117040 g , m a r k ) = v a l o f 0117060 \r / / - - - - - - - - - - - - - 0117100 - - - - - - - - - - - - - - - - 0117120 - - - - - - - - - - - - - 376 001 \0 0117140 325 \ - - - - - - - - - - - - - - 0117160 - - - - - - - - - - - - - - - - 0117200 - - - - \r / / C a l l e d f 0117220 r o m E n u m e r a t e M B 0117240 i n F o r w a r d M a i l . \r 0117260 / / C l e a n s u p a f t 0117300 e r a t t e m p t i n g t o 0117320 f o r w a r d a m e s s a 0117340 g e . \r [ \r l e t c o d e = 0117360 m a r k < < M a r k . s u b C 0117400 o d e \r m a r k = m a r k < 0117420 < M a r k . m a r k \r l e t t 0117440 y p e = m b > > M B . t y p 0117460 e \r \r i f t y p e e q m b 0117500 T y p e M l b x & m a r k 0117520 e q m a r k N o & \r ( ( c 0117540 o d 376 001 \0 235 207 e g e 4 0 b 0117560 & c o d e l e 4 3 b ) % 0117600 c o d e e q 1 1 0 b ) t 0117620 h e n \r [ / / p e r 0117640 m a n e n t e r r o r - - 0117660 r e t u r n t o s e n d e r 0117700 \r i f m s g > > M s g . 0117720 u M s g e q 0 t h e n S 0117740 t a r t U n d e l i v M s g ( m 0117760 s g ) \r t e s t m s g > 0120000 > M s g . u M s g n e 0 \r 0120020 i f s o \r 0120040 [ \r P u 0120060 t T e m p l a t e ( m s g > > M 0120100 s g . u M s g > > M s g . s t r 0120120 e a m , " * N $ S - $ S " 0120140 , \r 376 001 \0 300 \ 0120160 l v m b > > M N B . n a m e 0120200 , C t x R u n n i n g > > F t 0120220 p C t x . g e t C m d S t r i n 0120240 g ) \r m b > > 0120260 M B . t y p e = m b T y p e 0120300 F r e e \r ] \r 0120320 i f n o t \r 0120340 [ \r 0120360 m b > > M B . t y p e = m b 0120400 T y p e E x c p \r 0120420 m b > > M N B . e c = e 0120440 c U n s p e c i f i e d \r 0120460 ] \r r e s u l 0120500 t i s t r u e \r ] \r \r i 0120520 f t y p e e q m b T y p e 0120540 M l b x & m a r k 376 \0 360 ^ 0120560 316 e q m a r k Y e s t h e n 0120600 \r m b > > M B . t y p e 0120620 = m b T y p e F r e e \r i f 0120640 t y p e e q m b T y p e T e 0120660 m p F r e e t h e n \r m 0120700 b > > M B . t y p e = m a r 0120720 k e q 0 ? m b T y p e M l 0120740 b x , m b T y p e F r e e \r i 0120760 f t y p e e q m b T y p e 0121000 T e m p E x c p t h e n \r 0121020 m b > > M B . t y p e = m 0121040 a r k e q 0 ? m b T y p e 0121060 M l b x , m b T y p e E x c p 0121100 \r \r r e s u l t i s t y p e 0121120 n e m b > > M B . t y p e \r ] 0121140 \r 377 \0 \0 I f s M a i l S t o r e 0121160 . b c p l \0 373 230 ! 357 5 \0 \0 376 001 \0 0121200 323 340 / / I f s M a i l S t o r 0121220 e . b c p l - - I F S M a 0121240 i l S e r v e r S t o r e 0121260 c o m m a n d \r / / C o p y r 0121300 i g h t X e r o x C o r p o 0121320 r a t i o n 1 9 7 9 , 1 9 8 0121340 0 , 1 9 8 1 \r / / L a s t 0121360 m o d i f i e d N o v e m b e 0121400 r 1 7 , 1 9 8 1 9 : 0 5 0121420 P M b y T a f t \r \r g e t 0121440 " I f s D i r s . d e c l " \r 0121460 g e t " I f s F t p P r o t . 0121500 d e c l " \r g e t " I f s M a 0121520 i l . d e c l " \r g e t " I f 0121540 s S y s t e m I n f o . d e c l 0121560 " \r \r e x t e r n a l \r [ \r / / 0121600 o 376 001 \0 233 337 u t g o i n g p 0121620 r o c e d u r e s \r M t p S S t 0121640 o r e ; M t p S S t o r e M a 0121660 i l ; M t p S S t o r e C l e 0121700 a n u p \r \r / / i n c o m i n 0121720 g p r o c e d u r e s f r o 0121740 m o t h e r F T P a n d 0121760 M a i l m o d u l e s \r F t p 0122000 S S e n d M a r k ; N e t T o 0122020 D i s k ; F l i p C u r s o r 0122040 ; F T P M \r S t a r t M s g ; 0122060 W r i t e M N B ; F i n i s 0122100 h M s g ; C h e c k N a m e ; 0122120 E n u m e r a t e M B \r \r / / 0122140 i n c o m i n g p r o c e d 0122160 u r e s f r o m I F S D i 0122200 r s m o d u 376 001 \0 201 u l e s \r 0122220 D e s t r o y F D \r \r / / i n 0122240 c o m i n g p r o c e d u r e 0122260 s - m i s c e l l a n e o u 0122300 s \r S y s F r e e ; Z e r o ; 0122320 M u l t E q ; D e q u e u e 0122340 ; F i l e P o s \r L o o k u p 0122360 E r r o r C o d e \r \r / / i n 0122400 c o m i n g s t a t i c s \r C 0122420 t x R u n n i n g \r ] \r \f \r / / 0122440 - - - - - - - - - - - - - - - - * 0122540 - - - - - - - - - - - - \r l e t 0122560 M t p S S t o r e ( p l ) = 0122600 v a l o f \r / / - - - 376 001 \0 8 0122620 326 - - - - - - - - - - - - - - - 0122640 - - - - - - - - - - - - - - - - * 0122720 - - - - - - - - - - \r / / T h 0122740 i s p r o c e d u r e i s 0122760 c a l l e d o n c e f o r 0123000 e a c h p r o p e r t y l i 0123020 s t ( i . e . e a c h r e 0123040 c i p i e n t ) , \r / / a n 0123060 d t h e n o n c e m o r e 0123100 ( w h e n t h e [ E O C ] 0123120 a r r i v e s ) w i t h p 0123140 l = z e r o . \r / / T h e 0123160 r e c i p i e n t s a r e 0123200 v a l i d a t e d a s t h e 0123220 y 376 001 \0 M ! a r r i v e ; r 0123240 e j e c t e d o n e s a r e 0123260 s o m a r k e d . \r / / O 0123300 n t h e l a s t c a l l 0123320 ( w h e n p l = z e r o ) 0123340 , r u n d o w n t h e l 0123360 i s t g e n e r a t i n g \r / 0123400 / e x c e p t i o n s a n 0123420 d c h e c k i n g f o r a 0123440 s e n d e r a n d a t l 0123460 e a s t o n e r e c i p i e 0123500 n t . \r [ \r i f C t x R u n n 0123520 i n g > > F t p C t x . m s g 0123540 e q 0 t h e n / / f i r 0123560 s t p l \r [ \r l e 0123600 t e c = n i l \r C t 0123620 x R u n n i 376 001 \0 206 272 n g > > F 0123640 t p C t x . m s g = S t a r 0123660 t M s g ( 0 , 0 , l v e c 0123700 ) \r i f C t x R u n n i 0123720 n g > > F t p C t x . m s g e 0123740 q 0 t h e n \r r 0123760 e s u l t i s F t p S S e n d 0124000 M a r k ( m a r k N o , e c ) 0124020 \r ] \r l e t m s g = 0124040 C t x R u n n i n g > > F t p C 0124060 t x . m s g \r \r i f p l e q 0124100 0 t h e n / / n o m o 0124120 r e p l s \r [ \r / 0124140 / g e n e r a t e m a i l b 0124160 o x e x c e p t i o n s \r 0124200 / / w e a r e c o u n t 0124220 i n g o n t h e 376 001 \0 f 347 0124240 w a y t h e c o m p i l e r 0124260 a l l o c a t e s l o c a l 0124300 v a r i a b l e s . \r l 0124320 e t s a w M l b x , m l b x 0124340 I n d e x , s n d r E c = 0124360 f a l s e , 1 , e c S n d r 0124400 R e q u i r e d \r E n u m 0124420 e r a t e M B ( m s g , S t o 0124440 r e R e c i p i e n t s , l v 0124460 s a w M l b x ) \r w h i 0124500 l e m s g > > M s g . h o s t 0124520 Q . h e a d n e 0 d o \r 0124540 S y s F r e e ( D e q 0124560 u e u e ( l v m s g > > M s g 0124600 . h o s t Q ) ) \r / / t 0124620 h e r e m u s t b e a t 0124640 376 001 \0 035 " l e a s t o n e v 0124660 a l i d M L B X p r o p e r 0124700 t y \r u n l e s s s a w 0124720 M l b x r e s u l t i s F t 0124740 p S S e n d M a r k ( m a r k N 0124760 o , e c N o V a l i d M l b x 0125000 ) \r / / c h e c k s e 0125020 n d e r p r o p e r t y \r 0125040 i f s n d r E c e q 0 0125060 r e s u l t i s t r u e \r 0125100 l e t e r r R e c = L o 0125120 o k u p E r r o r C o d e ( s n 0125140 d r E c ) \r F T P M ( m a 0125160 r k N o , 4 2 b , l v e r 0125200 r R e c > > E r r R e c . e r r 0125220 o r S t r i n g ) \r S y s 0125240 F r e e ( 376 001 \0 033 256 e r r R e c 0125260 ) \r r e s u l t i s f a 0125300 l s e \r ] \r \r / / i s 0125320 t h e r e a v a l i d M a 0125340 i l B o x p r o p e r t y ? \r 0125360 / / N o t e : m u s t c h 0125400 e c k t h i s f i r s t s 0125420 o t h a t M S G . h o s t Q 0125440 w i l l b e e m p t y \r / 0125460 / o n f i r s t c a l l 0125500 w i t h l o o k u p M a i l b 0125520 o x = t r u e \r i f p l > > P 0125540 L . M L B X n e 0 t h e n 0125560 \r [ \r l e t m l b 0125600 x , e c = p l > > P L . M 0125620 L B X , 0 \r l e t f d 0125640 = C h e c k N a 376 001 \0 226 315 m 0125660 e ( m l b x , m s g , l v 0125700 e c , t r u e ) \r i f 0125720 f d n e 0 & f d n e 0125740 - 1 t h e n D e s t r o y F 0125760 D ( f d ) \r W r i t e M N 0126000 B ( m s g , ( e c e q 0 ? 0126020 m b T y p e M l b x , m b T 0126040 y p e E x c p ) , m l b x , 0126060 e c ) \r ] \r \r / / i s 0126100 t h e r e a v a l i d S e 0126120 n d e r p r o p e r t y ? \r i 0126140 f p l > > P L . S N D R n e 0126160 0 & M u l t E q ( l v m 0126200 s g > > M s g . p o s S n d r , 0126220 t a b l e [ 0 ; 0 ] ) 0126240 t h e n \r [ \r l 376 0126260 001 \0 230 027 e t s n d r , e c 0126300 = p l > > P L . S N D R , 0 0126320 \r C h e c k N a m e ( s n 0126340 d r , m s g , l v e c , 0126360 f a l s e ) \r W r i t e M 0126400 N B ( m s g , m b T y p e S n 0126420 d r , s n d r , e c ) \r 0126440 ] \r \r r e s u l t i s t r u 0126460 e \r ] \r \f \r / / - - - - - - - - 0126500 - - - - - - - - - - - - - - - - * 0126600 - - - - \r a n d M t p S S t o 0126620 r e M a i l ( ) = v a l o f 0126640 \r / / - - - - - - - - - - - - - 0126660 - - - - 376 001 \0 1 R - - - - - - - 0126700 - - - - - - - - - - - - - - - - * 0126760 - - - - \r [ \r l e t m s g = 0127000 C t x R u n n i n g > > F t p 0127020 C t x . m s g \r l e t e c = 0127040 N e t T o D i s k ( m s g > > 0127060 M s g . s t r e a m , C t x R 0127100 u n n i n g > > F t p C t x . b 0127120 s p S t r e a m ) \r i f e c 0127140 e q 0 t h e n \r [ \r 0127160 / / d i s a l l o w z e 0127200 r o l e n g t h m e s s a g 0127220 e s \r l e t p o s = 0127240 v e c 1 ; F i l e P o s ( m 0127260 s g > > M s g . s 376 001 \0 % " t r 0127300 e a m , p o s ) \r i f 0127320 M u l t E q ( l v m s g > > M 0127340 s g . p o s T x t , p o s ) 0127360 t h e n e c = e c Z e r o 0127400 L e n g t h M s g \r ] \r r 0127420 e s u l t i s e c ? F t p S 0127440 S e n d M a r k ( m a r k N o , 0127460 e c ) , t r u e \r ] \r \r / / 0127500 - - - - - - - - - - - - - - - - * 0127600 - - - - - - - - - - - - \r a n d 0127620 M t p S S t o r e C l e a n u 0127640 p ( o k ) b e \r / / - - - - - 0127660 - - - - - - - - - - - - - - 376 001 0127700 \0 325 p - - - - - - - - - - - - - 0127720 - - - - - - - - - - - - - - - - * 0127760 - - - - - - - - - - - - \r 0130000 i f C t x R u n n i n g > > F 0130020 t p C t x . m s g t h e n \r 0130040 C t x R u n n i n g > 0130060 > F t p C t x . m s g = F i 0130100 n i s h M s g ( C t x R u n n i 0130120 n g > > F t p C t x . m s g , 0130140 o k ) \r \r / / - - - - - - - - - 0130160 - - - - - - - - - - - - - - - - * 0130260 - - - \r a n d S t o r e R e c 0130300 i p i 376 001 \0 d 003 e n t s ( m b , 0130320 m s g , a r g s ) = v a 0130340 l o f \r / / - - - - - - - - - - 0130360 - - - - - - - - - - - - - - - - * 0130460 - - \r / / C a l l e d f r o 0130500 m E n u m e r a t e M B i n 0130520 M t p S S t o r e , t h i s 0130540 p r o c e d u r e g e n e r 0130560 a t e s m a i l b o x \r / / 0130600 e x c e p t i o n s f o r 0130620 t h o s e r e c i p i e n t s 0130640 w h i c h c a n b e v e 0130660 r i f i e d o n t h e f l 0130700 y . \r / / I t 376 001 \0 8 210 a l 0130720 s o s e t s f l a g s t o 0130740 r e c o r d s e e i n g a 0130760 t l e a s t o n e r e c i 0131000 p i e n t . \r / / a r g s ! 0 0131020 i s s a w M l b x , a r g 0131040 s ! 1 i s m l b x I n d e x 0131060 , a r g s ! 2 i s s n d r 0131100 E c \r [ \r l e t r e w r i t e 0131120 = f a l s e \r s w i t c h o 0131140 n m b > > M B . t y p e i n 0131160 t o \r [ \r c a s e 0131200 m b T y p e M l b x : \r 0131220 [ \r a r g s ! 0 0131240 = t r u e / / s a w M l 0131260 b x \r a r g s ! 1 0131300 = a r g s ! 1 + 1 376 001 \0 0131320 P 227 / / m l b x I n d e x \r 0131340 e n d c a s e \r 0131360 ] \r c a s e m b T y 0131400 p e E x c p : \r [ \r 0131420 l e t e r r R e c 0131440 = L o o k u p E r r o r C o 0131460 d e ( m b > > M N B . e c ) \r 0131500 F T P M ( m a r k M a 0131520 i l b o x E x c e p t i o n , 0131540 e r r R e c > > E r r R e c . f 0131560 t p E c , " $ D $ S " , \r 0131600 f a l s e , a r 0131620 g s ! 1 , l v e r r R e c > 0131640 > E r r R e c . e r r o r S t r 0131660 i n g ) \r S y s F r 0131700 e e ( e r r R e c ) \r 0131720 m 376 \0 331 351 314 b > > M N B . t y 0131740 p e = m b T y p e F r e e \r 0131760 r e w r i t e = 0132000 t r u e \r a r g s ! 0132020 1 = a r g s ! 1 + 1 / 0132040 / m l b x I n d e x \r 0132060 e n d c a s e \r ] 0132100 \r c a s e m b T y p e S 0132120 n d r : \r [ \r 0132140 a r g s ! 2 = m b > > 0132160 M N B . e c / / s n d r E 0132200 c \r e n d c a s e \r 0132220 ] \r ] \r r e s 0132240 u l t i s r e w r i t e \r ] \r 0132260 377 \0 \0 I f s M a i l R e t r i e 0132300 v e . b c p l \0 373 231 \n 333 350 \0 \0 376 0132320 001 \0 263 353 / / I f s M a i l R e 0132340 t r i e v e . b c p l - I F 0132360 S M a i l S e r v e r R e 0132400 t r i e v e c o m m a n d \r / 0132420 / C o p y r i g h t X e r o 0132440 x C o r p o r a t i o n 1 9 0132460 7 9 , 1 9 8 0 , 1 9 8 1 , 0132500 1 9 8 2 \r / / L a s t m o d 0132520 i f i e d M a y 1 3 , 1 9 0132540 8 2 2 : 2 1 P M b y T 0132560 a f t \r \r g e t " I f s . d e 0132600 c l " \r g e t " I f s D i r s 0132620 . d e c l " \r g e t " I f s F 0132640 i l e s . d e c l " \r g e t " 0132660 I f s F t p P r o t . d e c l " 0132700 \r g e t " I f s M a i l . d e 0132720 c l " \r 376 001 \0 330 f \r e x t e r n 0132740 a l \r [ \r / / o u t g o i n g 0132760 p r o c e d u r e s \r M t p S 0133000 R e t r i e v e ; M t p S R e 0133020 t r i e v e M a i l ; M t p S 0133040 R e t r i e v e C l e a n u p \r 0133060 \r / / i n c o m i n g p r o 0133100 c e d u r e s f r o m o t h 0133120 e r F T P a n d M a i l 0133140 m o d u l e s \r F t p S C h e c 0133160 k A c c e s s ; F t p S S e n 0133200 d M a r k \r F l i p C u r s o r 0133220 ; D i s k T o N e t ; F r e 0133240 e P L i s t ; I n i t P L i s 0133260 t ; M a i l S t a t D e l a y 0133300 \r \r / / i n c o m i n g p r 0133320 o c e d u r e s 376 001 \0 J Y f r 0133340 o m I F S D i r s \r I F S O 0133360 p e n F i l e ; O p e n I F S 0133400 S t r e a m ; C l o s e I F S 0133420 S t r e a m \r D e s t r o y F D 0133440 ; D e l e t e F i l e F r o m 0133460 F D ; S t r e a m s F D \r \r / 0133500 / i n c o m i n g p r o c e 0133520 d u r e s - m i s c e l l a 0133540 n e o u s \r S y s A l l o c a t 0133560 e Z e r o ; S y s F r e e ; 0133600 E x t r a c t S u b s t r i n g 0133620 ; C o n c a t e n a t e S t r 0133640 i n g s ; R N a m e s E q u a 0133660 l \r S e t T i m e r ; D i s m 0133700 i s s ; T i m e r H a s E x p 0133720 i r e d ; S e t F i l e P 376 001 0133740 \0 315 9 o s \r R e s e t s ; C l 0133760 o s e s ; E n d o f s ; R e 0134000 a d B l o c k ; T r u n c a t 0134020 e D i s k S t r e a m \r M o v e 0134040 B l o c k ; Z e r o \r I F S E 0134060 r r o r \r \r / / i n c o m i n 0134100 g s t a t i c s \r C t x R u n 0134120 n i n g ; m a i l ; d e b u 0134140 g F l a g \r ] \r \f \r / / - - - - 0134160 - - - - - - - - - - - - - - - - * 0134260 - - - - - - - - \r l e t M t p 0134300 S R e t r i e v e ( r e m o t e 0134320 P L , l o c a l P L ) = v 0134340 a l o 376 001 \0 036 z f \r / / - - - - 0134360 - - - - - - - - - - - - - - - - * 0134460 - - - - - - - - \r [ \r l o c a l 0134500 P L = F r e e P L i s t ( l 0134520 o c a l P L ) \r i f C t x R u 0134540 n n i n g > > F t p C t x . m s 0134560 g e q 0 t h e n / / f 0134600 i r s t t i m e f o r t h 0134620 i s R e t r i e v e \r [ 0134640 \r / / C h e c k o u t 0134660 h i s p L i s t \r u n 0134700 l e s s F t p S C h e c k A c 0134720 c e s s ( r e m o t e P L ) r 0134740 e s u l t i s 376 001 \0 273 R 0 \r 0134760 l e t m a i l b o x = 0135000 r e m o t e P L > > P L . M L B 0135020 X \r i f m a i l b o x 0135040 e q 0 r e s u l t i s F t 0135060 p S S e n d M a r k ( m a r k N 0135100 o , e c M l b x R e q u i r e 0135120 d ) \r f o r i = m a 0135140 i l b o x > > S t r i n g . l e 0135160 n g t h t o 1 b y - 1 0135200 d o \r i f m a i l 0135220 b o x > > S t r i n g . c h a r 0135240 ^ i e q $ . t h e n \r 0135260 [ m a i l b o x 0135300 > > S t r i n g . l e n g t h 0135320 = i - 1 ; b r e a k ] \r 0135340 u n l e s s R N a m 376 001 \0 0135360 P a e s E q u a l ( m a i l b o 0135400 x , r e m o t e P L > > P L . 0135420 U N A M ) % \r R N a m 0135440 e s E q u a l ( m a i l b o x , 0135460 r e m o t e P L > > P L . C N 0135500 A M ) d o \r r e s 0135520 u l t i s F t p S S e n d M a 0135540 r k ( m a r k N o , e c M l b 0135560 x N o t U n a m O r C n a m ) \r 0135600 \r / / I s t h e r e 0135620 a m a i l b o x ? \r / / 0135640 I F S O p e n F i l e c h e 0135660 c k s a c c e s s , s o s 0135700 w i t c h t o o u r " M a 0135720 i l " i d e n t i t y . \r 0135740 l e t u i = C t x R u n 0135760 n i 376 001 \0 s ` n g > > F t p C t 0136000 x . u s e r I n f o \r C t 0136020 x R u n n i n g > > F t p C t x 0136040 . u s e r I n f o = m a i l 0136060 > > M a i l . u i \r m a i 0136100 l b o x = C o n c a t e n a 0136120 t e S t r i n g s ( " < M a i l 0136140 > B o x > " , m a i l b o x ) 0136160 \r l e t e c , s t r e 0136200 a m = 0 , 0 \r l e t 0136220 t i m e r = n i l ; S e 0136240 t T i m e r ( l v t i m e r , 0136260 o p e n T i m e o u t * 1 0 0 0136300 ) \r [ / / r e p 0136320 e a t \r s t r e a m 0136340 = I F S O p e n F i l e ( m 0136360 a i l b o x , 376 001 \0 J 271 l v 0136400 e c , m o d e R e a d W r i t 0136420 e , 0 , l c V H i g h e s t 0136440 ) \r i f s t r e a 0136460 m n e 0 % e c n e e 0136500 c F i l e B u s y % T i m e 0136520 r H a s E x p i r e d ( l v t 0136540 i m e r ) b r e a k \r 0136560 D i s m i s s ( 1 0 0 ) 0136600 / / B u s y . W a i t 1 0136620 s e c o n d , t h e n t r 0136640 y a g a i n \r ] 0136660 r e p e a t \r C t x R u n 0136700 n i n g > > F t p C t x . u s e 0136720 r I n f o = u i / / s 0136740 w i t c h b a c k t o u s 0136760 e r ' s i d e n t i t 376 001 \0 215 0137000 \ y \r S y s F r e e ( m a 0137020 i l b o x ) \r i f s t r 0137040 e a m e q 0 t h e n \r 0137060 r e s u l t i s F t p 0137100 S S e n d M a r k ( m a r k N o 0137120 , \r ( e c e q 0137140 e c F i l e N o t F o u n d % 0137160 e c e q e c D i r N o t F 0137200 o u n d ? e c N o M a i l b o 0137220 x , e c ) ) \r \r l e t 0137240 m s g = S y s A l l o c a t 0137260 e Z e r o ( l e n M s g ) \r 0137300 m s g > > M s g . s t r e a m 0137320 = s t r e a m \r C t x 0137340 R u n n i n g > > F t p C t x . 0137360 m s g = m s g \r ] \r \r 0137400 l 376 001 \0 t = e t m s g = C 0137420 t x R u n n i n g > > F t p C t 0137440 x . m s g \r S e t F i l e P o s 0137460 ( m s g > > M s g . s t r e a m 0137500 , l v m s g > > M s g . p o 0137520 s E n d ) \r i f E n d o f s ( 0137540 m s g > > M s g . s t r e a m ) 0137560 r e s u l t i s - 1 \r \r / / 0137600 I f t h e n e x t m e s 0137620 s a g e i s d a m a g e d , 0137640 t h e n s a y ' n o m o 0137660 r e m e s s a g e s ' , \r / / 0137700 w h i c h w i l l c a s 0137720 e t h e f i l e t o b e 0137740 e m p t i e d t h e r e b y 0137760 h e a l i n g i t . \r i f 0140000 R e a d B l 376 001 \0 P 004 o c k ( m 0140020 s g > > M s g . s t r e a m , 0140040 l v m s g > > M s g . m h , 0140060 l e n M H ) n e l e n M H 0140100 t h e n \r [ i f d e b 0140120 u g F l a g t h e n I F S E 0140140 r r o r ( e c E o f I n H d r , 0140160 m s g ) ; r e s u l t i s 0140200 - 1 ] \r i f m s g > > M s g 0140220 . s e a l n e m h S e a l 0140240 t h e n \r [ i f d e b 0140260 u g F l a g t h e n I F S E 0140300 r r o r ( e c B a d M s g S e a 0140320 l , m s g ) ; r e s u l t i 0140340 s - 1 ] \r \r / / S e t u 0140360 p t h e p L i s t f o r 0140400 t h e n e x t m e 376 001 \0 F \ 0140420 s s a g e . \r l o c a l P L = 0140440 I n i t P L i s t ( ) \r M o v 0140460 e B l o c k ( l v l o c a l P 0140500 L > > P L . L G T H , l v m 0140520 s g > > M s g . l e n T x t , 0140540 2 ) \r M o v e B l o c k ( l v 0140560 l o c a l P L > > P L . R C V D 0140600 , l v m s g > > M s g . d a 0140620 t e , 2 ) \r \r / / r e a d y 0140640 t o t r a n s f e r m e s 0140660 s a g e b o d y \r r e s u l t 0140700 i s l o c a l P L \r ] \r \f \r / 0140720 / - - - - - - - - - - - - - - - 0140740 - - - - - - - - - - - - - - - - * 0141020 376 001 \0 240 334 - - - - - - - - - - - 0141040 - - \r l e t M t p S R e t r i 0141060 e v e M a i l ( n i l , n i l 0141100 ) = v a l o f \r / / - - - - 0141120 - - - - - - - - - - - - - - - - * 0141220 - - - - - - - - \r [ \r l e t m 0141240 s g = C t x R u n n i n g > 0141260 > F t p C t x . m s g \r l e t 0141300 b y t e s = v e c 1 ; M 0141320 o v e B l o c k ( b y t e s , 0141340 l v m s g > > M s g . l e n T 0141360 x t , 2 ) \r \r S e t F i l e P 0141400 o s ( m s g > > M s g . s t r e 0141420 a m , l 376 001 \0 332 M v m s g > 0141440 > M s g . p o s T x t ) \r l e t 0141460 e c = D i s k T o N e t ( 0141500 C t x R u n n i n g > > F t p C 0141520