Article View: fj.sys.next
Article #3719NeXTmail and Non-NeXTmail furiwake
From: Sugou Shinichirou
Date: Thu, 04 Feb 1993 06:52
Date: Thu, 04 Feb 1993 06:52
194 lines
7499 bytes
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!shinShow 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