🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.sys.next
Article #3719

NeXTmail and Non-NeXTmail furiwake

#3719
From: Sugou Shinichirou
Date: Thu, 04 Feb 1993 06:52
194 lines
7499 bytes
$@?{@8$G$9!#(J

$@0JA0$3$N(JNG$@$G(JNeXTmail$@$H(JNon-NeXTmail$@$N?6$jJ,$1$,=PMh$k;]$r=q$-$^$7$?!#2??M$+(J
$@$NJ}$+$i<B8=J}K!$N@bL@4uK>$,$"$j$^$7$?$N$G=q$-$^$9!#(J

$@0J2<!"(JNeXTmail$@$r(J'NM'$@!"(JNon-NeXTMail$@$r(J'Non'$@$H=q$-$^$9!#(J

$@M}6~$O4JC1$G$9!#(J

NM$@MQ$H(JNon$@MQ$NFs$D$N%a%$%k%9%W!<%k$rMQ0U$7$^$9!#;d$N$H$3$m$N(J/usr/spool$@$r(Jls
$@$9$k$H<!$N$h$&$K$J$C$F$$$^$9!#(J

'mail'$@$O=>Mh$+$i$"$k(Jdirectory$@$G$3$3$K(JNon$@$rF~$l$k$h$&@_Dj$7$F$$$^$9!#(J'NeXTMail'
$@$H$$$&(Jdirectory$@$,?7$7$/:n$C$?$b$N$G!"$3$3$K(JNM$@$rF~$l$^$9!#(J

  total 14
  drwxr-xr-x 13 root        1024 Dec 18 18:53 .
  drwxrwxr-x 11 root        1024 Sep 12 02:53 ..
  drwxrwx---  3 agent       1024 Jan  7 14:48 NeXT
  drwxrwxr-x  3 agent       1024 Jan  7 14:48 NeXTFaxes
  drwxrwxrwx  2 root        1024 Feb  4 12:04 NeXTMail
  drwxrwxrwx  2 agent       1024 Feb  3 22:18 appkit
  drwxr-xr-x  3 agent       1024 Aug 10 14:36 at
  drwxrwx---  2 agent       1024 Feb  3 22:18 lpd
  -rw-r--r--  1 root           3 Feb  3 01:51 lpd.lock
  drwxrwxrwt  2 root        1024 Jan 16 21:41 mail
  drwxrwx---  2 root        1024 Feb  4 14:44 mqueue
  drwxr-xr-x  2 root        1024 Dec 18 18:53 render
  drwxr-xr-x 14 uucp        1024 Jan 16 03:30 uucp
  drwxrwxrwx  3 uucp        1024 Jan 13 11:17 uucppublic

$@$5$F!"(JMail.app$@$O(JPreference$@$r;H$&$3$H$G!"%a%$%k$N%9%W!<%k$rJQ99$G$-$^$9!#(J
Preference$@$N(Jexpert$@$r8+$F2<$5$$!#;d$N>l9g$O(J

        /usr/spool/NeXTMail

$@$KJQ99$7$F$"$j$^$9!#(J

$@8e$O2?$i$+$NJ}K!$G%a%$%k$r$3$l$i$N(Jdirectory$@$K?6$jJ,$1$l$P$$$$$o$1$G$9!#(J

$@$3$N?6$jJ,$1J}$G$9$,!"%a%$%k%7%9%F%`$O(J ~/.forward $@%U%!%$%k$,$"$C$F$=$NCf?H(J
$@$,<!$N$h$&$K$J$C$F$$$?>l9g!"(J

| "someCommand"

$@E~Ce$7$?%a%$%k$NFbMF$r(J someCommand $@$KI8=`F~NO$H$7$FN.$9$h$&$K$J$C$F$$$^$9!#(J
$@$G$9$+$i$3$N(JsomeCommand$@$,%a%$%k$r?6$jJ,$1$k$h$&$K$9$l$P$$$$$N$G$9!J<B$O(JMH
$@$K$O?6$jJ,$15!G=$,F~$C$F$$$k$N$G$9$,!";d$NNOITB-$N$?$a$+!"!V(JNM$@$H(JNon$@$N?6$j(J
$@J,$1!W$,$3$l$G$O<B8=$G$-$^$;$s$G$7$?!#$7$?$,$C$F(J .forward $@%U%!%$%k$N5!G=$r(J
$@MxMQ$7$F<B8=$7$F$$$^$9!K!#(J

$@$J$*!"(J.forward$@%U%!%$%k$r$3$N$h$&$KMxMQ$9$k$H!"%3%s%T%e!<%?4D6-$K$h$C$F$O(J
$@!VJL$N(Jhost$@$KE~Ce$7$?<+J,MQ$N%a%$%k$r(J .forward $@%U%!%$%k$r;H$C$F0l%v=j$N%^%7(J
$@%s$K=8$a$k!W$3$H$,=PMh$J$/$J$j$^$9!#$=$N$h$&$J?M$O(Jsendmail$@$N(Jalias$@$r;H$C$F(J
$@<B8=$7$F2<$5$$!#(J

$@$?$H$($P(J foo $@$H(J bar $@$H$$$&%^%7%s$,$"$C$F!"$9$Y$F$r(Jbar$@$K=8$a$?$$$H$9$k$H!"(J
foo$@$N(Jsendmail$@$N(Jalias$@$K(J

    shin:shin@bar.mysite.juice.or.jp

$@$H$$$&46$8$G=q$$$F$*$-$^$9!#(J

$@$5$F:G8e$K;D$C$?LdBj$O>e5-$N(JsomeCommand$@$G$9$,!"%=!<%9$r:\$;$F$*$-$^$9!JL>(J
$@A0$r(Jdivider$@$H$7$F$"$j$^$9!#(JOS2.1J$@$N;~$K:n$j$^$7$?!#:#(JOS3$@$G%3%s%Q%$%k$G$-$k(J
$@$+;n$7$^$7$?$,DL$j$^$7$?!K!#$3$l$r%3%s%Q%$%k$7$F(J/usr/local/bin$@JU$j$K(J 
divider $@$H$$$&L>A0$G:\$;$F$*$$$F!"(J~/.forward$@$NCf?H$r(J

| "/usr/local/bin/divider shin"

$@$H$$$&46$8$K$7$F$*$1$P(JOK$@$G$9!#(Jdivider$@$N0z?t$K<+J,$NL>A0$rF~$l$F8F$S$^$9!#(J
$@%=!<%9$O6K$a$F4JC1$G$9$N$G!"FI$a$PJ,$+$k$O$:$G$9!#(J

$@$J$*!";d$O%a%$%k$OAG?M$J$N$G!"%a%$%k$N%X%C%@$N=*N;ItJ,$,$I$3$J$N$+!"$=$NCN(J
$@<1$,$"$j$^$;$s!#$G$9$+$i%a%$%kA4BN$r%Q!<%9$7$F$$$^$9!JK\Ev$O$3$l$O%P%0$N85(J
$@$J$s$@$1$I!K!#$I$J$?$+@lLg2H$NJ}!"65$($F2<$5$$!#<!$N$h$&$J(Jregexps$@$GI=$5$l(J
$@$k$b$N$H9M$($F$$$$$N$+$J!)(J

	^----*$

$@>/$7(Jdivider$@$K4X$7$FJdB-$7$^$9!#(J

$@<B:]$K;H$C$F$_$k$H!"(JNM$@$N(Jreceipt$@!J!VAw$C$?%a%$%k!":#FI$_;O$a$?$H$3$m$@$h!<!W(J
$@$H$$$&!"Nc$N%a%$%k!#$3$l$OJXMx$G$9$h$M!<!K$O(JMail.app$@$KN.$l$F$$$C$?J}$,;H$$(J
$@0W$+$C$?$N$G!"$=$N$h$&$K$7$F$"$j$^$9!#(J

        BOOL receiptMail $@%U%i%0$,$=$&$G$9!#(J

$@$=$l$H!"(JNon$@$r6/@)E*$K(JMail.app$@$KN.$9$?$a$N%"%I%l%9$,!"(J

        osushi-shin

$@$G!"$=$l$N%U%i%0$,(J

        BOOL osushiMail

$@$G$9!#(J

MAXBUF$@$O%a%$%k$N0l9T$N:GBgD9$G$9$,!"CN9g$$$N?M$,!V(Jsendmail$@$G$O(J255$@J8;z0J2<(J
$@$@!W$H8@$C$F$$$?$h$&$J5$$,$7$^$7$?$,3N?.$,;}$F$J$+$C$?$N$G(J10000byte$@$K$7$F(J
$@$"$j$^$9!#$^$"!"$3$l$@$1$"$l$P0n$l$k$3$H$O$J$$$G$7$g$&!#$3$3$b@lLg2H$NJ}!"(J
$@%"%I%P%$%9$r$*4j$$$7$^$9!#(J

$@0J>e$G$9!#(J
-----------------divider.m---------------------------------
// Ver1.1. If the address is 'osushi-shin', this mail is force to be sent to
// osushi(NeXT). Register 'osushi-shin' in /etc/sendmail/aliases and you can use it.
// 
// This program divides NeXTmail and nonNeXTmail. Receipt mail is also sent to NeXTmail
// directory. 
// Written by S.S.

extern "Objective-C" {
#import <string.h>
#import <sys/param.h>
#import <stdio.h>
#import <stdlib.h>   
#import <libc.h>   
#import <objc/objc.h>
}   

void
fatalError(const char *msg)
{
   fprintf(stderr, "%s\n", msg);
   // syslog(LOG_ALERT, msg);
   exit(1);
}

void
assert(BOOL cond, const char *msg)
{
   if (!cond)
      fatalError(msg);
}

void
assert(FILE *fp, const char *msg)
{
   if (!fp)
      fatalError(msg);
}

main(int argc, char *argv[])
{
   assert(argc == 2, "usage: divider userName < input");
   char tmpFile[MAXPATHLEN]; sprintf(tmpFile, "/tmp/divider-%d", getpid());
   FILE *in = stdin, *out = fopen(tmpFile, "w"); assert(out, "divider: can't open tmpFile");
   const MAXBUF = 10000; 
   BOOL NeXTMail = NO, receiptMail = NO, osushiMail = NO;
   { char buf[MAXBUF];
     while (fgets(buf, MAXBUF, in)) {
        NeXTMail = NeXTMail || strstr(buf, "Next-Attachment:") == buf;
        receiptMail = receiptMail || strstr(buf, "Subject: Read Receipt") == buf;
        osushiMail = osushiMail || strstr(buf, "To: osushi-shin") == buf;
        fputs(buf, out); }}
   fclose(out);

   char *userName = argv[1];
   char spoolDir[MAXPATHLEN]; sprintf(spoolDir,"%s",
                                      NeXTMail || receiptMail || osushiMail ?
                                      "NeXTMail" : "mail");
   char spoolFile[MAXPATHLEN]; sprintf(spoolFile, "/usr/spool/%s/%s", spoolDir, userName);
   in = fopen(tmpFile, "r");
   out = fopen(spoolFile, "a");
   assert(in && out, "divider: can't open file");
   { char buf[MAXBUF];
     while (fgets(buf, MAXBUF, in))
        fputs(buf, out);
     fputs("\n", out); }            // need newline so as to separate it from the next mail
   fclose(in); fclose(out);
   unlink(tmpFile);
   
   return 0;
}
   
------------------divider.m end----------------------------------

------------------Makefile---------------------------------------
CC = cc++
CFLAGS = -Wall -g

debug:divider
clean:
	-/bin/rm *.o
install:
	install divider /usr/local/bin
------------------Makefile end-----------------------------------

--
Shin'ichirou Sugou     (NeXTmail acceptable)


				   
Technical Details
Message-ID: <SHIN.93Feb4155218@sgtp.sgtp.apple.juice.or.jp>
Path: arc1-ca.pugleaf.net!sparky!uunet!ccut!news.u-tokyo.ac.jp!wnoc-tyo-news!lkbreth!sgtp!shin

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 115a95,9c79dbd699b64ad4,start
X-Google-Attributes: gid115a95,public
X-Google-ArrivalTime: 1993-02-03 22:52:18 PST
Path: arc1-ca.pugleaf.net!sparky!uunet!ccut!news.u-tokyo.ac.jp!wnoc-tyo-news!lkbreth!sgtp!shin
From: shin@sgtp.apple.juice.or.jp (Sugou Shinichirou)
Newsgroups: fj.sys.next
Subject: NeXTmail and Non-NeXTmail furiwake
Message-ID: <SHIN.93Feb4155218@sgtp.sgtp.apple.juice.or.jp>
Date: 4 Feb 93 06:52:18 GMT
Sender: shin@sgtp.apple.juice.or.jp
Distribution: fj
Organization: SG Total Planning, Japan
Lines: 194