I have eventually decided to read the RFC822 STANDARD document (augh...
ouchh... arrghh...) and to provide full RFC822 support in LISTSERV (and soon
in NETSERV). After trying to understand the specs at the bottom of the
document for the n+1-th time, I realized that it was actually much simpler
than it looked like and could be implemented easily.
I have therefore decided to write a set of RFC822-parsing execs which will
come as part of the LISTSERV system but will be made public domain, operating
system independent and context-independent. I will encourage server
maintainers to use them to parse input RFC stuff and create output RFC mail so
that if there is a bug or a problem, only ONE exec has to be fixed. They will
be used by LISTSERV starting with the next release and by NETSERV when RFC822
is implemented into it. Right now I have decided to write the following three
execs:
- An exec which, given a canonical USERID,DOMAIN,NAME string, produces a
RFC822 encoded stream for this mailbox. Example:
Eric FRECP11 Eric Thomas --> Eric Thomas <Eric@FRECP11>
@CIR059 FRORS31 --> "@CIR059"@FRORS31
Note that a fix has been incorporated for the Crosswell MAILER's "feature"
of 'anything1 AT anything2 <userid@node>' --> 'anything1@anything2 <userid@
node>' --> syntax error.
- An exec which, given a RFC822 "field", performs the folding operation on a
given number of columns. Did I misunderstand something, or does RFC822 allow
you to fold on ANY blank in the field? Of course the program will attempt
folding after ">, " strings and suchlike for better output, but if it is not
possible it will fold anywhere. Note that the Crosswell MAILER does not
allow folding withing quoted strings, which is a violation of RFC822 and is
EXTREMELY difficult to address as you are usually FORCED to fold within the
quoted string.
- An exec which inputs a mail header from the program stack, unfolds it, and
perform some optional post-processing such as:
- Determining the "actual date" (DATE/RESENT-DATE), and possibly generating
a default one
- Determining the "actual origin" (RESENT-SENDER/RESENT-FROM...), in USERID
DOMAIN NAME format
- Extracting the list of "TO" or "CC" recipients, in USERID DOMAIN NAME
format
The complete original (unfolded) header, as well as other return information
and (possibly) info/warning/error messages will be returned to the caller.
That should do most of the job, the rest is trivial keyword/comma abbutal
and suchlike. The first exec is already written and operational on my server,
I'll try to write the two other ones tomorrow if I can. I have a lot of
fighting to do with my school right now: I have not been allowed to study in
the computing department next year because "I don't have the level". I am only
277th over 360 students in computer sciences, which may seem difficult to
understand as I have the best marks in the school in that area, but CS amounts
to only 10% of the coefficients for the CS department (don't ask), english is
5% (the dept head barely speaks english, that explains it), and the most
important fields are quantum physics (don't ask), linear (RLC) filters design
(don't ask), low-frequency electronics, etc. Really, don't try to understand
why these are the most important areas for a CS student -- there is really no
logic there. I have therefore been assigned to the commercial computing
sciences sub-department, which means I'll have to work on IBM PCs and program
in COBOL, dBASE III, FRAMEWORK, MULTIPLAN, LOTUS and other wonderful
contraptions, and that my final training course will be to implement and
integrate a computing facility (read: a PC with hard-disk and matrix printer)
in some old-fashioned company where people don't know what a computer is. The
best being that this thing does not take place in Paris but in Rennes, 450kms
away. That's like Metz but on the other side of France:
Rennes <---450 kms---> Paris <---400 kms---> Metz
Anyway it would be a very long story to explain everything, but as you might
guess I am not wholly satisfied with this and intend to try to do something
(with very little hope, though). But let's be honest, there HAS been an
improvement in the school's attitude since last year: they EARNESTLY tried to
take personal choice into account. They did assign me to something related to
computers after all -- it could have been high-energy inductors, power
transformers or something similarly captivating. Because this is supposed to
meet my personal choices it will be more difficult to request a change,
though... *sigh*
Eric
|