Banner
 
 

Maillib Software Changes

 
540.15 Re-fix '.' data transparency issue
Tue, July 6 2010

The change described by DNote 530.08 addressed a problem where data packets sent to a SMTP server starting with the '.' character caused

-554 errors.  Unfortunately, this fix did not protect all variations of

the problem especially with simple data streams (i.e not file attachments). These issues have been corrected.

540.14 Fix READRECEIPT restrictions
Mon, June 21 2010

The ^OP READRECEIPT action now works correctly if supplied with a valid email address.

The ^ATTACH and ^INCLUDE actions will now handle attachment file names which have nodes that are quoted and include lower-case characters.

The LOAD NICKNAMES command will attempt to load the file from the family to which MAILLIB is SL-ed. Previously, only family 'DISK' was used.

540.13 Recognise GZIP packages
Tue, June 15 2010

MAILLIB will now recognise and correctly handle GZIP attachments; PDF attachments are now assigned the correct mime Content-Type of 'application/pdf'.

Support has been provided for the NICKNAMELIST and MYSELF(TRANSNO) SYSTEM ML attributes as described in SUPERVISOR DNote 540.54.

A new MAIL command, TRANSNO, allows the user to conveniently search the Metalogic MAILLIB logs for a specific email transaction number. Since this command uses the LOG FIND facility, additional log filtering can be appended to the command.

 -- MAIL --- TRansno --- <TransNo> ----+----------------+--------|
                                       +-- <log spec> --+

For example:

    MAIL TRANSNO 1234
       ---- MAILLIB Log at 17:03 ----
       ---- Search 'All' ----
       ---- 15/06/10 LOG ----
    16:46:05 Snd:07025:Sent OK to:Ian.Patterson@metalog.com
    16:46:03 Att:07025:Attached *TEST/FILE ON DEV (864.0 Kb)
    16:46:02 Rcv:07025:To:Support@metalog.com,Subject:Test
    MAIL TRANSNO 5678 BACK 2 DAYS
    MAIL TR 1234 +

540.12 Support for ASAP
Mon, May 17 2010

Internal change to allow MAILLIB functionality with ASAP SUPERVISOR.

540.11 Fix RAWFILE.RELEASEID error/Mail queue handling
Mon, March 29 2010

MAILLIB will now not give the attribute error 'RAWFILE.RELEASEID STRING DID NOT IN PERIOD OR NUL' @ 53548900 when queuing a SMTP file to disk because of server unavailability. The attribute error would only occur if the email subject contained any double-quote characters.

Also, MAILLIB will now automatically attempt to re-send any currently queued emails during its initialization phase. Previously, this was not done until 180 seconds after MAILLIN had started.

540.10 Allow -987 emails to be nudged
Fri, March 12 2010

Emails that have been queued because of -987 errors, "Connection refused by server" will now be automatically retried by a NUDGE command or queued email poll.

540.09 Minor fixes and limit storage exceeded warnings
Thu, February 18 2010

If a warning email was sent to a recipient that had already exceeded its local storage on the mail server, this email would have been rejected and MAILLIB would have attempted to send another warning, eventually causing MAILLIB to fault. This behaviour has been corrected.

This change also addresses several minor problems with MAILLIB command handling and logging. MAILLIB will now report the correct number of active SMTP connections in the STATUS command response.

540.08 Fix mail loss when primary server off-line
Tue, February 9 2010

When both Primary and Alternate Mail Servers are specified, a timing hole existed where emails could be lost if the primary server went off-line whilst the internal status of the secondary was incorrect. MAILLIB now properly protects all references to internal server information and this problem has been fixed.

540.07 Handle .PDF correctly and force stream file to Mime
Thu, January 28 2010

Previously, MAILLIB would have attempted to handle many stream file attachments without mime-encoding them. File types such as .ZIP and container files are detected but other types such as .PDF were not handled correctly. The problem with certain PDF files has been observed to cause MAILMAN fault #14 errors at MAILLIB sequence numbers 59770000 and 59860000.

MAILLIB will now unconditionally encode *all* stream file attachments: this will prevent problems with unusual file content. PDF files are now detected correctly and '.PDF' will be added to the attachment name if required.

540.06 Discard 48"0A" characters from text body
Mon, January 18 2010

Previously, MAILLIB did not ignore 4"0A" characters when these were present in the text body of the email (i.e not ^INCLUDE or ^ATTACH content). This problem resurfaced after recent changes to support the PDF implementation and is now fixed.

Because there are various reasons for any email transaction to be queued by MAILLIB, the MAILMAN and QUICKMAIL entry points will now return a flag in bit [47:1] indicating that the email has been saved to disk. This means that the user can take appropriate action to reprocess the email instead of the caller attempting to retry what maybe already a lost cause.

540.05 Correct alternate server handling after read timeout
Wed, December 23 2009

Previously, MAILLIB did not correctly handle an email request that had been rejected by a server because its own maximum number of SMTP connections had been exceeded. In such cases, the mail server forcibly closes the SMTP connection immediately but MAILLIB did not detect this for 60 seconds, eventually marking the failure as a 'Read Timeout'. To compound the problem, MAILLIB was unable to reroute the email to the alternate server (if assigned) because the SMTP port file was not set up correctly.

Now, MAILLIB detects the immediate forced close immediately and will properly use the alternate server, if available. If the alternate is unavailable, the email will be queued to a *SMTP file on disk with the error value -987 and is eligible for reprocessing later.

 12:18:48 Que:01228:Message Queued [Closed] (-987):Connection refused by server 

To address the wider issue of too many concurrent MAILLIB SMTP requests requests flooding the email server, a new control mechanism has been implemented to allow a limit to be enforced. A new command, MAXSMTP, is now available to control this setting: the default value is 10 connections but can take any value between 1 and 100. The syntax is:

   --- MAIL --- MAXsmtp -----+------------------+----------|
                             +-- <integer> -----+
   MAIL MAXSMTP 5
   --- MAIL Library response ---
   Maximum concurrent SMTP connections is now 5

When an email request is received by MAILLIB which will exceed the MAXSMTP limit, MAILLIB unconditionally holds up the request for 30 seconds before retrying. If the limit would still be exceeded, the request is queued with a result of -997 (not -999) and a *SMTP disk file is created. The MAILLIB log will show entries such as:

  10:18:59 Msg:2900:Max connections exceeded:mail queued
  10:19:02 Que:02900:Message Queued test@metalogic.eu.com (-997):Too
           many SMTP connections:mail queued

The -997 SMTP files are treated in the same way as normal queued files and MAILLIB attempts to reprocess them during the next 'nudge' cycle.

Also, additional status information is now provided by the MAIL STATUS command showing corrected transmitted bytes values and destination details such as alternate server or SMTP file. MAILLIB now correctly applies the ALTPORTNO setting to the alternate mail server instead of previously using the value assigned to the primary.

540.04 Fix QUICKMAIL wrapping
Wed, December 9 2009

Previously, using the QUICKMAIL entrypoint to process email requests would split very long lines of text into 1000-character segments. In such circumstances, QUICKMAIL would incorrectly drop the first character from every split line except the first. This problem has now been fixed and, in addition, the maximum number of characters before line-wrapping occurs has been increased to 5000.

540.03 Support CRAM-MD5 authentication
Wed, December 9 2009

MAILLIB now supports CRAM-MD5 as a method for SMTP authentication. This challenge-response authentication mechanism is widely used by many SMTP servers and is significantly more secure than the PLAIN and LOGIN methods also offered by MAILLIB.

The syntax of the AUTH command has been modified to support CRAM-MD5:

  MAIL AUTH CRAM-MD5
      --- MAIL Library response ---
  SMTP Authentication is set to 'CRAM-MD5'
   Username and Password are NOT set!!!

If a password has not been previously assigned, as shown above, then:

  MAIL AUTH USER TEST/PASSWORD
      --- MAIL Library response ---
  SMTP Authentication is set to 'CRAM-MD5'
    Username is 'TEST'
    Password has been assigned

As before, if the username and password (aka secret key) are incorrect, the mail server will reject any all email transmissions.

13:29:30 Err:02095:Server report #535 5.7.8 Authentication failed

Note that, at this time, MAILLIB only supports 23-characters passwords.

540.02 Correct SMTP file re-send behaviour
Thu, December 3 2009

In rare circumstances, it was possible for a queued SMTP file to be rejected, when subsequently processed, with a 'Bad message text' error (-989) which indicates a corrupt SMTP file. This problem has been fixed.

The change described in DNote 540.01 could cause unexpected line wrapping in a generated PDF file if the streamed line of text included any '\','(' or ')' characters.

540.01 Export PDFWRITER and wrap stream files
Tue, December 1 2009

When creating PDF files, MAILLIB will now wrap individual lines of streamed data (delimited by carriage-return) instead of using truncation. Note the default line width is 90-character for stream file input; this may be overridden to landscape mode (132 characters) by using the ^ATWPDF (wide-PDF) modifier or by equating the ATWPDF logical file with the MAILER utility. Generally, MAILLIB will now handle line lengths of 20,000 characters in a stream attachment instead of the previous limit of 1,000.

The PDFWRITER entrypoint has been exported for use by other Metalogic software.

530.32 Revise virtual Prints size limit checking
Mon, November 23 2009

The handling of Virtual printing requests that exceed site-defined User limits has been changed. Previously, MAILLIB's Virtual Print server would have refused the request, marked the request as EXCEPTION and sent a simple email to the original recipient.

This behaviour has been changed. Virtual Printing is now handled in the same way as normal email attachments such as those sent by the MAILER utility. This means that only those files that exceed the users quota are rejected, other files will be handled as normal. The rejected files are not removed and can, optionally, be printed at a later time if the message size limits are relaxed for that user or printed by another user.

As with normal rejected attachments, Virtual Mail requests that exceed limits will send detailed messages to the recipient and the MAILLIB postmaster. See MAILLIB DNote 530.12 for more details.

Please note that MAILLIB will always use the physical size of each printer backup file when calculating user limits although this will not match the actual attachment size when delivered to the email client. This is not done because of the additional overhead that would be incurred.

The message size calculations used by User Limits to control large file attachments has been improved. In particular, attachments which require additional message content are now adjusted by 5% though this is only of significance for large files.

Also, MAILLIB will now retain '%' characters in ASCII stream file attachments instead of incorrectly translating them to carriage returns.

530.31 Correct stream file buffering problem
Sun, November 15 2009

Previously, MAILLIB could have corrupted certain HTML attachments by unexpectedly splitting a line of HTML in the wrong place causing the file to be incorrectly rendered by the email client. Typically, such errors would occur after 3000 characters had been read from the source. This problem has been fixed.

530.30 Support basic SMTP authentication
Tue, November 3 2009

MAILLIB now supports several modes of SMTP authentication, allowing access to protected SMTP mail servers. In this implementation, only LOGIN and PLAIN modes are supported and there is no SSL or TLS security available for encrypting the login so these protocols are not available.

A new MAIL command called AUTH is now available and requires MAILLIB to authenticate all email requests with both primary and alternate mail servers. In a later release, it will be possible to assign individual authentication at the server level.

   ----  AUTH --------+----------------------------+----|
                      +----   -   -----------------+
                      +---- LOGIN -----------------+
                      +---- PLAIN -----------------+
                      +---- USER  --- <User/Pass>--+

If AUTH is set to PLAIN or LOGIN, an AUTH USER command must also be used to establish security. MAILLIB will always expect a password to be provided after the user and must be separated by '/'.

   MAIL AUTH PLAIN
   MAIL USER TEST/test
   MAIL AUTH -

Appropriate steps within MAILLIB have been taken to secure the password. Note that the USER specification is case-sensitive. The authentication settings can be cancelled at any time by using the AUTH

- command.

530.29 Correct PDF handling of blocked DATA files
Tue, November 3 2009

The generation of PDF attachments for blocked DATA files is now handled correctly. Previously, for some such files, the attachment would have been corrupted.

PDF is now permitted as a default file extension for all unqualified attachments (i.e. those that have not been assigned an alternative name or cannot be converted to PDF. This setting may be changed using the ATTACH command e.g.

  MAIL ATTACH PDF

530.28 Fix queued email handling
Mon, November 2 2009

The recent change to support PDF creation caused queued email handling, used when the mail server is unavailable, to fail. The usual SMTP files created on disk would generate corrupted files, usually with no message content, when the server came on-line. This problem has been corrected.

530.27 Omit sequence numbers again for INCLUDE files
Wed, October 14 2009

The changes applied by DNote 530.26 inadvertently caused INCLUDE files with sequence numbers to retain those numbers inside the email body. MAILLIB has always stripped sequence numbers, regardless of symbol FILEKIND, so the previous handling of INCLUDE files has been restored.

530.26 Support PDF attachments creation
Tue, October 13 2009

The MAILLIB library now has the capability to create Adobe PDF files either by streaming source files as email attachments or by creating the files directly on the MCP system. At this time, the implementation is by no means complete and there are various enhancements planned.

With regards to the mail system, PDF attachments can be created from any symbolic or readable stream file. The data is streamed directly in the email content so no local PDF file is created on the MCP system. Instead of using the ^ATTACH directive with, for example, the Opal MAIL function, a PDF variant is available:

  ^ATTPDF *SYMBOL/MYSOURCE ON DEV

The email attachment file name will be automatically assigned an extension of .PDF to allow the file to opened by the Adobe Reader utility. All PDF files, by default, will open with page thumbnails visible in the Bookmarks navigation panel.

According to file specifications, MAILLIB will attempt to determine the best page formatting and font size to be used. Currently, only the font COURIER NEW is permitted but it will be possible to override this. If necessary, MAILLIB will switch the page set up to Landscape instead of Portrait (e.g. allowing better presentation of 132-character backup files). At this time, only A4 page formatting is supported.

Regarding STREAM files, MAILLIB currently uses a default line width of 90 characters and any lines longer than this are truncated inside the generated PDF file. This temporary behaviour will be corrected in the next release.

The PDF files are uncompressed and not linearized - this means that they are not optimized for fast loading by network or internet access (via a browser). Both linearization and, possibly, compression of PDF files will be available in later releases.

PDF files can also be generated from printer backup files by the MAILLIB Virtual Server. At this time, the only way to print files direct to PDF is to set up a new PrintS device:

  PS CONFIG MAILPDF SERVER "PRINTTOPDF IN SL MAILLIB"

By changing the PRINTDEFAULTS DESTINATION setting of a MCS session or WFL job, all generated backup files will be created with the .PDF extension. Additional controls will be available later allowing the use of PRINTS attributes such as PAGECOMP and FORMID to signal a PDF request.

A new public entrypoint in the MAILLIB library allows PDF files to be created by any external program. This entrypoint is shown below:

  Boolean Procedure CREATEPDF(INPUT,PDF);
  File INPUT;
  Array PDF[0];
     Library MAILLIB;

The CREATEPDF entrypoint accepts a symbolic blocked file as source and requires the name of the output PDF file from Words[3] onwards in simple DisplayForm name format. There are no security restrictions in force, normal MCP file security applies.

  File INPUT(KIND=DISK,TITLE="SYMBOL/MYSOURCE.");
  Array PDF[0:21];
  Replace Pointer(PDF[3]) By "PDF/"48"7F""MYSOURCE.PDF"48"7F"".";
  CREATEPDF(INPUT,PDF);

At this time, CREATEPDF does not yet handle stream files.

530.25 Correct CODESET handling
Mon, October 12 2009

Several issues with the handling of non-ASCII codesets (such as LATIN1ISO) whilst generating file attachments have been addressed. For email body text, MAILLIB will now apply "iso-8859-1" and "iso-8859-2" character sets for LATIN1ISO and LATIN2ISO codeset configurations respectively instead of the general "us-ascii". No other character sets are yet supported.

530.24 Correct number of lines returned in Help
Fri, August 7 2009

The Mail Help command indicated that there was one more line of help than there actually was. This could in some cases cause Supervisor to fault with a bounds error.

530.23 more stray CR handling issues
Tue, July 28 2009

The changes described by DNotes 530.19 and 530.20 did not handle all cases of carriage-returns embedded in either printer backup or symbolic files. THis caused stricter mail servers to possibly reject emails with a -501 error e.g. Stray CR character in the message. MAILLIB will now ensure any spurious CR characters are translated before data transmission.

530.22 Correct MODIFY error message and allow -530 reqs
Fri, July 10 2009

The MODIFY command will now show the requested transaction number in error messages if the transaction is unknown; previously, the last transaction in the mail queue would have been displayed. Emails that have been queued by MAILLIB because of a -530 error ("Relay to this address is prohibited") may now be the subject of a MODIFY command to change the recipient email address.

530.21 Resolve SYSOPS SESSIONLOGGING issues
Wed, June 10 2009

Previously, on MCP releases with the new SYSOPS option SYSTEMLOGGING, it was possible for MAILLIB's Virtual print server to fail with the following error when printing a CANDE or MARC session after a log-off or SPLIT.

 "Print aborted. Request 45194:No email address from USERCODE or NOTE"

The conditions for this problem are shown below:

1. The SYSOPS option SESSIONLOGGING is set to CONDITIONAL or UNCONDTIONAL.

2. PS DEFAULT JOBSUMMARY is set to either CONDITIONAL or UNCONDITIONAL.

3. The split session has the appropriate NOTE and DESTINATION PrintS settings but the session USERCODE
does not have an email address assigned.

This problem is now resolved.

530.20 Protect embedded CRs in stream files
Tue, April 7 2009

The change described by DNote 530.19 caused multiple embedded carriage returns within a single text line to be converted to '?' characters when processed by MAILLIB. This problem caused presentation issues particularly for HTML emails and is now fixed.

530.19 Inhibit embedded CR or LF in backup files
Mon, March 16 2009

Previously, MAILLIB was not handling stray CR or LF characters that may have appeared in some printer backup files. This caused some SMTP servers that used strict checks on the presence of these characters to fail email transmission with 501 SMTP errors. This change has been extended generally for all email handling not only backup files.

530.18 Fix PRIMARYSERVER OPAL attribute
Thu, February 26 2009

The change described in DNote 530.12 caused the SUPERVISOR OPAL attribute PRIMARYSERVER to return a corrupted string; this problem has been corrected.

530.17 Correct LONGFILENAMES handling/support ATTACHDIR
Thu, January 22 2009

Previously, using an ^ATTACH directive in a message body to process a directory which had filenames with nodes longer than 17 characters caused MAILLIB to omit those files from the attachment processing. This problem is now fixed.

Further, MAILLIB now better handles some SEQDATA attachment or include files that have embedded null characters in character position 80-84 of each record. This caused certain stricter SMTP servers to return a

-501 error "There is a NUL character in the message".

The MAILER utility now also better supports attachments and includes that process long filenames. For example, passing an ^ATTACH request using TASKSTRING would have previously failed if quoted levels appeared in the attachment filename/directory.

To assist with directory handling in general, MAILER will now accept two new run-time file equations: ATTACHDIR and INCLUDEDIR. When present, MAILLIB will append '/=' to the file title before passing it to MAILLIB.

For example, the following MAILER file equations:

    FILE ATTACH=(ADMIN)FILE/1             maps to
    ^ATTACH (ADMIN)FILE/1                 MAILLIB file request

To process a file directory:

    FILE ATTACHDIR=(ADMIN)FILES ON DEV    maps to
    ^ATTACH (ADMIN)FILES/= ON DEV         MAILLIB file request

INCLUDEDIR can be used instead of ATTACHDIR in the above examples and maps them onto their ^INCLUDE equivalents.

530.16 Reinstate MIME-encoding for ZIP and container
Wed, January 7 2009

The recent changes applied to improve 552 errors caused MAILLIB to ignore BASE64 mime-encoding for both container and zip file attachments. Although the attachment would appear correct in the client email, the data would be corrupted. This problem is now fixed.

530.15 Fix end of file error on config file
Mon, December 22 2008

Versions of MailLib > 530.08 could sometimes fail with the error:

*METALOGIC/MAILLIB/CONFIG I/O ERROR: END OF FILE @ (22888015)

This problem has been corrected.

530.14 Fix ATTACH of STREAM files
Mon, December 1 2008

The changes applied by DNote 530.12 caused any STREAM file attachment to be corrupted if the individual file was greater than 1000 characters. This problem has been fixed.

530.13 Show Usercode in Postmaster -552 email
Thu, November 27 2008

The usercode of the caller will now be shown in any MAILLIB-generated

-552 error emails for both the Postmaster and intended recipients(s).

530.12 Improved handling of -552 mail errors
Wed, November 26 2008

This is a major change in the way that -552 errors (server storage exceeded) are handled by MAILLIB. Also, User Limit controls by usercode are now better handled and provide better information both to the Postmaster and recipients when an email exceeds its limit.

Previously, a -552 error was retryable allowing the site to modify the queued transaction or correct the storage problem for that mailbox on the mail server. This behaviour has been changed; -552 errors are now not retryable and will be automatically rejected; no SMTP file is created.

MAILLIB will now notify email both Postmaster and intended recipients with an email when a -552 error has been encountered. The email provides detailed information about the failure, including attachment and include file details. An example email is shown below:

 --
 Subject:MAILLIB Alert! SERVER storage exceeded
         for ian.patterson@metalog.com [-552]
 The following email exceeded Storage limits on Mail Server DELL8500
   To:ian.patterson@metalog.com
   Subject:Test
   Estimated Mail size: 1273.3 Kb
   Transaction No: 4902
   Maillib returned: -552
 The above email transaction was Rejected
 #1  *SOURCE/NEWTAPE ON DEV   (1273.3 Kb)
 -> Attachment was processed ok
 --

For emails that exceed Maillib User Limits restrictions, the recipient receives the email intact but with warning messages indicating the reasons that any files/includes have been skipped or truncated. In addition, the Postmaster will also receive an advisory email similar to that for a -552 error.

In the event that a large email is sent to an offline server and the email is not restricted by MAILLIB User Limits, MAILLIB is obliged to retain the *SMTP file but when the server subsequently becomes available and fails the queued email with a -552 error, MAILLIB will now also automatically remove the associated *SMTP file. Both system messages and entries in the MAILLIB log will show this behaviour:

10:48:24 Snd:04906:Sent OK to:ian.patterson@metalog.com,
         POSTMASTER@METALOGIC.EU.COM
10:48:24 Rcv:04906:To:ian.patterson@metalog.com,Subject:MAILLIB Alert!
         SERVER storage exceeded for ian.patterson@metalog.com [-552]
10:48:24 Err:04904:*SMTP file removed due to SERVER storage limit exceeded
10:48:24 Err:04904:Rejected ian.patterson@metalog.com (-552):Requested
         action aborted:Exceeded storage
10:48:24 Err:04904:Server report #552 Message too large - contact your
         administrator
10:48:14 Msg:Checking SMTP mail Queue (2 messages)

The MAIL SHOW command has been enhanced to show attachment and include file details when a transaction number is provided as a modifier to SHOW:

  MAIL SHOW 4912
      --- MAIL Library response ---
      --- Searching for Queued Email  #4912 ---
  #4912 *SMTP/SUPERVISOR/20081126/"ian.patterson@met"/04912 1303.4 Kb
    To:ian.patterson@metalogic.eu.com release@metalog.com
    Subj:'Attach *SOURCE/NEWTAPE ON DEV'
    Reason: Queued (-999)
    #1 : File *SOURCE/NEWTAPE ON DEV     (1273.3 Kb)
      -> Attachment processed ok
 Each file will show status information about each attached or
 included file.

MAILLIB will now indicate adjusted file sizes when an attachment has been MIME-encoded. This has an effect for User Limit and Server storage limit considerations since MIME-encoded attachments are 33% larger than the original file length. Where appropriate, MAILLIB will indicate in the attachment details entry if a file has been encoded.

Lastly, MAILLIB would have faulted with a SEG ARRAY ERROR @29169630 when trying to MIME-encode certain stream file attachments This problem has been fixed.

530.11 Correct NICKNAMES load family specification
Wed, November 19 2008

The change described in DNote 530.10 regarding the stricter handling of the LOAD NICKNAMES command caused MAILLIB to fail to find the NICKNAMES file on MAILLIB's SL-ed family at initialisation time. This problem has been corrected.

530.10 Fix SMTP file PRODUCT attribute error
Mon, November 10 2008

Previously, if the mail server was unavailable and MAILLIB was forced to create SMTP recovery files, the following attribute error would be displayed if the emails' 'To:' address was derived from a loaded MAILLIB nickname:

 ATTRIBUTE ERROR:RAWFILE.PRODUCT STRING DID NOT END IN PERIOD OR NULL

This did not cause the SMTP file to lose its intended recipients but the recipients would not be shown in a MAIL SHOW QUEUE response. This problem is now fixed.

MAILLIB will now correctly handle a SMTPFAMILY that is set to DISK; creating SMTP files with the MAILER utility may have caused MAILLIB to fail to add them into its queue. The formatting of various error messages relating to SMTP file creation has been improved.

530.09 Implement SMTP family assignment
Wed, November 5 2008

A new MAILLIB command called SMTP has been implemented. This command allows the site to control the location of the *SMTP disk files created for email requests that have been queued (e.g. because of Mail server unavailability). Previously the SMTP files would have been directed to the family specified in the MAILLIB SL, typically the H/L unit, which may be undesirable.

The command syntax is shown below:

  --- MAIL --- SMTPfamily ---+-------------+------------------|
                             +-- <family --+

The SMTP family is changed immediately and may only be used when the SMTP mail queue is empty (as seen by MAIL SHOW QUEUE). A default value will be automatically assigned using the SL family when this version of MAILLIB is first used. The current setting can always be viewed in a MAIL STATUS response. To assign an alternate family:

  MAIL SMTP CDIMAGE
      --- MAIL Library response ---
  Default family for SMTP files will be CDIMAGE

In addition, MAILLIB now checks all SMTP file writes to the SMTP family ensuring that sufficient disk space is available. In the event that MAILLIB is unable to complete the write of a SMTP file because of disk shortage, the email request is aborted and the following will be seen:

13:34:31 Err:04480:Unable to create *SMTP disk file on CDIMAGE 13:34:31 Err:04480:Rejected (-112):Insufficient Disk space for *SMTP 13:34:30 Att:04480:Attached *BD/0029353/0029355/000OUTFILE ON DISK 13:34:30 Que:04480:Message Queued [194] (-999):Mail Server unavailable 13:34:30 Rcv:04480:To:Ian.Patterson@metalog.com,Subject:Print files

         from "Session" #29353

New MAILLIB errors have been included for the above:

 -112  Insufficient Disk space for *SMTP file
 -113  I/O error writing *SMTP file
 -114  SMTP family <family> Unavailable of Off-line

If error -114 is returned, this means that the Mail server is offline and the disk family used to hold *SMTP files is also unavailable. In this serious situation, all email requests are rejected and Virtual printing will fail.

An intermittent error where messages seen in a MAIL LOG response were truncated by two characters has been fixed. The LOAD NICK command will now not accept any FROM <filename> specification; MALLIB will only ever load a nicknames file called *METALOGIC/MAILLIB/NICKNAMES on the SL MAILLIB family.

Previously, it was possible for the CODESET setting to be reset back to ASCII if an international codeset such as LATIN1ISO was active and a LOAD USER or LOAD ADDR command was subsequently issued. This sequence caused MAILLIB's configuration to be corrupted and, the next time that MAILLIB was restarted, CODESET would be reset. This problem has been fixed.

530.08 Check for invalid characters in included files
Tue, October 28 2008

MAILLIB will now ensure that any included ASCII or EBCDIC files do not pass invalid characters such as nuls (4"00") in the data passed to the SMTP server. Previously, such rogue characters could have caused email rejection.

530.07 Protect against memory RESIZE faults
Wed, September 10 2008

MAILLIB is now protected against the possibility of MEMORY resize faults by callers of the GETMAILINFO library entrypoint when very large amounts of mail log data are being returned. In particular, this problem caused SUPERVISOR to fault with REQUESTED MEMORY SIZE GREATER THAN 65535 WORDS when handling a very large MAIL LOG request (please refer to SUPERVISOR DNote 530.83 for additional information).

The maximum number of lines permitted within the body of a mail message sent by the Opal MAIL function or MAILLIB's QUICKMAIL entrypoint has now been increased from 3000 to 6000 lines.

530.06 RFC 2821 compliance and Unix file handling
Wed, August 6 2008

MAILLIB will now correctly handle data strings, either in body text or file records, that have a "." in character position 1. Previously, in such situations, the '.' character would have been discarded by the SMTP server because MAILLIB did not conform to RFC 2821 requiring mail clients to insert an additional '.' character at the head of the sending text.

MAILLIB will now correctly handle stream files which have Unix-style end-of-line delimiters (hex 48"0A").

530.05 Enhancements to MODIFY command
Tue, July 29 2008

The MODIFY command has been enhanced to allow the 'To:' address of certain kinds of queued SMTP files to be replaced by one or more alternative addresses. Typically, this could be used for a queued email that has been rejected because the recipient mailbox is suspended or unavailable for some reason. Emails that are queued because of server unavailability (i.e. -999) cannot be modified with an alternate email address.

To change the email address of queued transaction #63136:

   MAIL MODIFY 63136 support@metalog.com

MAILLIB will immediately perform a NUDGE so that the modified emaill will be immediately reprocessed. If the revised 'To:' address also fails, a SHOW QUEUE command address will also show the revised address.

The original content of each modified email will remain intact though any 'Cc:' or 'Bcc:' headers will be ignored. Additional information will appear in the MAIL LOG:

12:44:08 Snd:63136:ReSent OK to:ian.patterson@metalog.com 12:44:08 Msg:Processing #63136 SMTP file 'To:ian.patterson@metalog.com' 12:44:08 Msg:Trans #63136 *SMTP/SYSTEM-NODE/20080729/"fake@metal"/63136

         modified
12:44:08 Cmd:MODIFY 63136 support@metalog.com

The <Return-path> header in the redirected message will appear as <RedirectedMail@mydomain.com> where mydomain.com is the MAILLIB's local default domain.

530.04 Fix RELAY RESTRICTED errors with TEST mails
Wed, July 23 2008

The change described in DNote 530.03 caused TEST emails on most mail servers to fail with a RELAY RESTRICTED -530 error. This was because of the attempted append of Maillib's default domain to unqualified addresses which consequently caused problems with 'From:' specifications with spaces in the field.

Because of this issue, the use of a 'From:' header to participate in the 'MAIL FROM:' SMTP exchange will now be disallowed unless a full qualified email address is used.

530.03 Change MAIL FROM and flexible REPLY
Tue, July 22 2008

MAILLIB now includes the 'Originator-info' header for all email requests. This field identifies the MCP system origin and is usually of the form 'UserCode@TCPIP.Domain.com'; the usage of this address is now limited by MAILLIB.

If a 'From:' header has been provided by the caller and MAILLIB has validated that the address domain is acceptable (i.e. maps to MAILLIB's 'Default Domain' or the local TCPIP domain), then this 'From:' address will be used in the 'MAIL FROM:' protocol exchange with the mail server. This change allows certain mail servers to report errors back to addresses other than the PostMaster (which is used in all other cases).

Further, if a 'From:' header is an unqualified email address with no '@ <domain>' component, MAILLIB will now append its default domain setting, if present, to the address. Nicknames cannot be used with a 'From:' header.

530.02 Support SUPERVISOR MAILLIB attributes
Wed, July 16 2008

This change allows SUPERVISOR to retrieve MAILLIB run-time and configuration information into a small attribute subset called SYSTEM MAIL as described in SUPERVISOR DNote 530.71.

530.01 Fix CODESET help info
Fri, March 7 2008

On-line HELP for the CODESET function, previously omitted, is now available. The main HELP screen for MAILLIB has been updated to include all command variants.

520.10 Relax SENDER controls
Wed, May 30 2007

The changed described in DNote 510.10 caused a 'Sender:' header to be inserted into the body of a MAILLIB generated email if the domain of an user-provided 'From:' email address did not match the TCPIP domain of the MCP system. This behaviour has been modified to now omit the 'Sender' header if the domain of the 'From:' address additionally matches that of the DEFAULT POSTMASTER address.

520.09 UPdate of HELP for logging
Wed, April 25 2007

MAILLIB's on-line HELP has been updated to included information about the new LOG implementation, described by DNote 520.05.

520.08 Force MAILLIB log file close after quit
Thu, April 5 2007

The active MAILLIB log file will now be closed when MAILLIB is terminated by a QUIT or THAW. Previously, the file remained opened by the MAGUS library until that library was itself terminated.

520.07 Inhibit attached body messages if PDEF SUPPRESS
Tue, February 27 2007

If the PDEF SUPPRESS is set to TRUE or the MAILLIB control ^SIG NONE is used then MAILLIB will now inhibit the generation of 'Attached #' messages in the email body. MAILLIB was already inhibiting signatures and 'Included #' entries with SUPPRESS set to TRUE.

520.06 Allow include option on last line
Thu, February 22 2007

When calling the MailMan entrypoint directly an ^Include option in the last row of the string array was ignored. When processing Ascii HTML files <br> strings were added.

520.05 New MAIL logging system
Tue, February 20 2007

The logging of MAILLIB transactions and messages has been significantly changed. Instead of the SYSTEM/SUMLOG, MAILLIB will now log information into a dedicated file called *METALOGIC/MAILLIB/LOG on a nominated family configured using the INSTALL utility. By default, this family is set to that of DL LOG.

The LOG command has been enhanced to allow varied access to the MAILIB log files; searching by category, wild card text patterns or time and date ranges is permitted. The LOG command extensions are shown below:

                   +<<--------------------------------------------+
  --- MAIL -- LOG -+--+--------------------------+------------+---+---|
                      +-- <Category> -------------------------+
                      +-- <Time/Date> --+---------------------+
                      |                 +--  -  <Time/Date> --+
                      +-- FIND ---- <Text Pattern> -----------+

<Category>

As in previous versions of MAILLIB, <Category> is a 3-character text value that filters the log search by message category. These categories are MSG,SND,RCV,ERR,LGC,QUE,ATT,INC and CMD.

<Date/Time>

  ---- <hhmm> --+--------------+--------------------------------+-----|
                +- <dd/mm/yy> -+-+------------------------------+
                                 +-  -  <hhmm> --+--------------+
                                                 +- <dd/mm/yy> -+
The <dd/mm/yy> format depends on the global setting of the Metalogic configuration variable SYS_USDATES and can be set with the INSTALL utility. It is likely that the above syntax will be extended in future releases.

The FIND modifier permits the searching of each log entry for the specified text. The FIND automatically encloses the target with "=" at both ends of the text and is not case-sensitive, therefore finding both lower-case and upper-case matches.

The log files are automatically released when the file size exceeds 15,000 records or the LC CLOSE command is used. The LC command allows any comment command to be written into the current log. The command category for any LC command is 'Lgc'. The LC command is shown below:

  --- MAIL -- LC --+--- <text> ------+----------------------------|
                   |                 |
                   +--- CLOSE -------+
520.04 Fix spurious Alternate PortNo error
Fri, January 19 2007

MAILLIB will now correctly assign a default Alternate PortNo assignment when a MAIL ALTSERVER command is used. Previously, for MAILLIB CONFIG files created by earlier versions of MAILLIB, the misleading display message "Invalid SMTP Alternate Port No:25" would be displayed during MAILLIB initialisation even though an alternate server was not currently assigned.

520.03 PDEF SUPPRESS=TRUE removes signature
Mon, November 6 2006

For print requests handled by MAILLIB's Virtual Print server, the default signature and 'Include #' and 'Attached #' messages will not appear in the email body if the PRINTDEFAULTS attribute SUPPRESSED is set to TRUE.

520.02 Allow MAILLIB usage for TRIM-only sites
Thu, November 2 2006

MAILLIB licensing has now been extended for sites that do not have full SUPERVISOR but are licensed for the TRIM module.

520.01 Fix CODESET data handling
Thu, September 28 2006

The change applied by DNote 510.13 caused the CODESET implementation to be broken for sites using CCSVERSION other than ASERIESNATIVE. This meant that text using a local odesets would not be correctly translated in email attachments or within the text body. This problem has been fixed.

510.13 Prevent mail corruption by null characters
Mon, July 3 2006

Previously, MAILLIB did not always eliminate invalid characters (e.g. nulls) from symbolic or text source files which could have caused CR-LF pairs to be dropped from any generated attachment. Now, MAILLIB will replace invalid characters by '?' in the message body, includes or attachments.

510.12 Prevent corrupted email headers using QUICKMAIL
Tue, February 28 2006

The change described in DNote 510.11 could have caused some corruption of email headers passed to the QUICKMAIL entrypoint when using the MAIL function from SUPERVISOR and FLEX. This problem has been fixed.

510.11 New QUICKMAIL entrypoint
Wed, February 22 2006

The MAILMAN entrypoint in the MAILLIB library is used to generate and send emails from various origins including SUPERVISOR, Virtual Mail printing and user programs such as MAILER. However, using the MAILMAN interface directly now needs to be simplified to allow the planned use of the MAIL function into FLEX Opal scripting.

To enable MAILLIB calls to be easier to use, a new entrypoint called QUICKMAIL has been implemented. This procedure has the following declaration in MAILLIB:

  Real Procedure QUICKMAIL(MAILHDRS,MAILTEXT,OPT);
  Value OPT;
  Ebcdic Array MAILHDRS, MAILTEXT [0];
  Boolean OPT;
     Library MAILLIB;

The MAILHDRS and MAILTEXT array are used in the same way that the Opal MAIL function operates; that is, MAILHDRS holds a string of email headers whilst MAILTEXT hold multiple lines of text for the mail body each line delimited by a CR (48"0D"). Both arrays should be terminated by a NULL (48"00") character. All header contents are validated by MAILLIB and error values are returned if an illegal header is seen.

The OPTION parameter allows the user to specify additional controls and operate as in the MAILMAN entrypoint. Please refer to the MAILLIB Reference manual for more information. The OPTION parameter does not require any mandatory settings.

Example ALGOL program:

  BEGIN
     LIBRARY MAILLIB(LIBACCESS=BYFUNCTION);
     Real Procedure QUICKMAIL(MYHDRS,MYTEXT,OPTION);
     Value OPT;
     Ebcdic Array MYHDRS, MYTEXT [0];
     Boolean OPT;
        LIBRARY MAILLIB;
     Ebcdic Array HDRS,TXT[0:29999];
     Boolean OPTION;
     Replace HDRS By "To:Support@metalog.com;Subject:QuickMail";
     Replace TXT  By "First line",48"0D",
                     "Second line of body text",48"00";
     QUICKMAIL(HDRS,TXT,OPT);
  End.
510.10 Allow 'From:' addresses without local domain
Tue, February 14 2006

Previously, if MAILLIB encountered a FROM specification in an email, the address was checked to see if it belonged to the MCP's local TCPIP domain. If the TCPIP domain and email address domain did not match, even partially, the FROM was modified to append the originator in the form of <usercode>@<TCPIP domain>. This measure was employed to identify email spoofing from MCP systems using MAILLIB.

This behaviour has been changed. If a FROM address is used and its email address does not match the local TCPIP domain, the FROM address is now not modified and MAILLIB will include a 'Sender:' header in the email body. This 'Sender:' header allows spoofing to be protected since many email clients will show this field when the email is displayed. The change permit spoofed emails to be traced and sent to the outside world with an intact FROM address.

The new behaviour is shown below:

MAILLIB From TCPIP domain Mail 'From:' Mail 'Sender:' a@bcd.com bcd.com a@bcd.com a@zzz.com bcd.com a@zzz.com usercode@bcd.com bcd.com usercode@bcd.com

On earlier versions of MAILLIB, the FROM address for a@zzz.com in the above example would have been automatically changed to:

a@zzz.com [USERCODE@BCD.COM]

Also with this change, MAILLIB will now assign the Default Postmaster email address, if available, for the normal 'Reply-To header' if one has not been assigned. Previously, it was usual that the usercode- TCPIP domain constructed mail address would have been used.

510.09 Assign default domain to unqualified Reply address
Tue, January 24 2006

MAILLIB will now automatically append the default domain address to any unqualified Reply (RFC 'Reply-To') address, as with other provided email addresses. Note that MAILLIB will permit only one email address to be assigned to a Reply-to field and that MAILLIB nicknames will not be recognised.

510.08 Handle text lines greater than 998 chars
Mon, November 21 2005

MAILLIB will now always split text message lines in 998 character chunks as dictated by RFC 1521. Previously, MAILLIB would not have handled such lines correctly, causing them to be truncated. This problem is now fixed.

510.07 Protect ALTSERVER and fix non-ucoded SUMMARY
Thu, November 3 2005

If an ALTSERVER assignment was in force and MAILLIB's primary server rejected emails with certain errors (because of illegal mailbox, unknown user etc) then MAILLIB would attempt to send the mail using the alternate server. This behaviour has been corrected; at this time it has been decided that the secondary server will not be used in these circumstances.

Print requests with only a SUMMARY file present and no valid NOTE or usercode information (i.e. '*') were incorrectly printed by MAILLIB's virtual print server. Instead of marking the print file as EXCEPTION, this error caused the SUMMARY file to be subsequently removed and could therefore not reprintable. This problem is now fixed.

510.06 Assign default SMTP port for alternate server
Tue, October 25 2005

After assigning an ALTSERVER server assignment (see DNote 510.05), it was possible for the default SMTP port number assigned to the new mail server to be set to 0. Now, the default value of 25 will be assigned automatically when ALTSERVER is used; note that this value can be overridden by the ALTPORTNO command.

510.05 Correct MAILLIB shutdown behaviour
Tue, October 25 2005

If MAILLIB shutdown was initiated using an AX QUIT, the MAILLIB library would persist in the mix indefinitely if programs other than Metalogic software were still linked to the library. This behaviour, which prevented users from linking to a new invocation of the library until the old copy had terminated, has now been fixed.

510.04 Implement alternative mail server support
Tue, October 25 2005

MAILLIB will now permit the specification of a secondary or alternate mail server allowing redundancy if the primary server has failed or is off-line. The server may be specified by the ALTSERVER command and its SMTP port is assigned with the ALTPORTNO modifier. These commands are syntactically similar to the existing SERVER and PORTNO commands.

------ ALTServer ---+--------------------------+----------|
                            +----- <IP address> ----+
                            +----- <host name> ----+
                            +----------    -   ----------+
------ ALTPortno ---+--------------------------+----------|
                            +----- <integer> -------+

When an alternate server is first specified using ALTSERVER, a default value of 25 is assumed for the SMTP port number. This may be overriden by the ALTPORTNO modifier. The alternate server may be cancelled at any time using the '-' modifier i.e.

MAIL ALTSERVER -

When an email to the primary server fails and a secondary server has been assigned, MAILLIB will automatically route the email request to the secondary server without creating an interim *SMTP disk file. If both servers fail, the email will then be written to disk. Note that the primary email server will *always* be used first even if the last email was known to have failed.

510.03 Support for MAILLIB MARC Directive
Wed, August 17 2005

This change supports the formatting of messages returned to the new MAILLIB MARC Directive.

510.02 FIX SEG ARRAY FOR FILE WITH BIG MAXREC
Mon, June 13 2005

Previously, attaching DATA files with certain large MAXRECSIZE values with FRAMESIZE=8 could have caused a SEG ARRAY ERROR @ 59310000 in MAILLIB. This problem has now been fixed.

510.01 UPDATE
Tue, May 3 2005

Internal metalogic change to reflect MCP 51.1/HMP 10.0 compatibility.

500.13 FIX LONG FILE NAME TRUNCATIONS
Wed, November 24 2004

For systems running with SYSOPS LONGFILENAMES set, MAILLIB was not correctly handling files with levels greater than 17 characters. This problem caused multiple MCP warnings to be generated handling file attachments and giving unexpected PC file names. This behaviour has now been fixed.

500.12 DON'T TRUNCATE LONG LINES IN PLAIN TEXT ATTACHMENTS
Wed, November 24 2004

For plain text file attachments, MAILLIB would automatically segment individual lines greater than 255 characters causing spurious CR-LF markers to appear in the attached file. This behaviour had the side effect of causing some characters to be dropped from the segmented lines.

MAILLIB will now correctly segment plain text attachments, without character loss, for lines greater than 3000 characters.

500.11 FIX EXTRA FILE EXTENSION ON ATTACHMENTS
Mon, October 25 2004

Previously, MAILLIB would unconditionally add the default file extension (e.g. '.TXT') to any attached MCP file, even if that file already has its own PC extension on the MCP system. This behaviour has been corrected; MAILLIB will only append the default document extension if the PC file attachment does not already have one. MAILLIB still provides special handling for files such as wrapped containers, zipped archives and will append .ZIP or .CON if needed.

500.10 HANDLE BLOCKED STREAM FILES
Thu, September 2 2004

Previously, MAILLIB could receive an UNEXPECTED END OF FILE error when generating a file attachment from a FILESTRUCTURE=STREAM file that had a MAXRECSIZE greater than the value of 1. MAILLIB will now handle these stream files as if they were blocked, writing records into the attachment with length of MAXRECSIZE characters. Note that the MCP handles blocked stream files in the same fashion.

500.09 FIX SEG ARRAY ON LONG TEST/CORRECT ABORT
Fri, June 4 2004

If, when performing a TT MAIL TEST, the user inadvertently transmitted the whole page which included garbage data, MAILLIB could fault with a SEG ARRAY error.

MAILLIB will now correctly handle ABORT commands; previously, due to changes in DNote 500.06, ABORT was being treated as a MODIFY. Both these problems are now fixed. The ABORT command has been enhanced to allow a transaction number list or the keyword ALL:

                             +<<<--- , ------------+
                             |                     |
---- MAIL ----- ABORT ---+---+--- <transaction> ---+-+-------|
                         |                           |
                         +--------- ALL -------------+

If 'ALL' is used, then MAILLIB will delete all queued emails (as seen in a SHOW QUEUE response) but any currently active transactions are NOT affected; these must be aborted manually.

For example:

MAIL ABORT 12345,12346,12388
MAIL ABORT ALL

500.08 FIX LARGE HEADERS IN SMTP FILE
Sat, May 22 2004

Previously, MAILLIB would fault with a SEG ARRAY error if a queued email, with any individual message header (e.g. 'To:', 'From:') longer than 1800 characters, was subsequently re-processed. This problem has now been fixed.

500.07 HANDLE STREAM PRINTFILES
Thu, May 13 2004

If the SYSOPS option BACKUPFSDFLT is set to STREAM, then the system will create printer backup files with a FILEKIND of PRINTFILE and EXTMODE of EBCDIC, but a FILESTRUCTURE of STREAM. With such files, MAILLIB did not attempt to translate characters from EBCDIC to ASCII, causing the emailed files to be unreadable. This behaviour is now fixed

500.06 ALLOW MAILLIB WITH FLEX
Tue, April 6 2004

Both FLEX Inquiry and FAMILYMANAGER will now be able to call MAILLIB library routines without the need for a valid SUPERVISOR licence key. Work is currently in progress to implement MAIL support in the above programs.

500.05 RESTORE CONTENT-DISPOSITION HEADER FOR ATTACHMENTS
Thu, March 25 2004

The CONTENT-DISPOSITION header had been accidentally deleted from the set up of attachments; this could have caused some email clients (e.g. Eudora 6.0) to include the file in the body of the email instead of attaching it. This header has now been restored.

500.04 FIX LOAD NICKNAMES SEG ARRAY ERROR
Thu, March 11 2004

The LOAD NICKNAMES command would occasionally fault with SEG ARRAY ERROR when handling nickname definitions which had short names but long descriptions. This problem is now fixed.

500.03 CORRECT MULTIPLE QUEUED TEST EMAIL HANDLING
Mon, March 8 2004

Previously, if the MAILLIB library received multiple TEST email requests in a short period of time, it was likely that only the first TEST would be handled correctly. This behaviour, which could occur on very busy systems or with slow TCPIP connections to the mail server, has now been corrected.

500.02 ALLOW SUBJ AND FIX MULTI EMAIL TEST
Fri, February 27 2004

The header keyword 'Subject:' may now be truncated to 'Subj:' in a Virtual Mail server request.

Previously, when the TEST command was used with more than one email recipient, the command could have caused the SUPERVISOR call to fault with a SEG ARRAY error. This problem is now fixed and multiple recipients will be handled correctly.

500.01 FIX INCLUDE AND ATTACH DIRECTORIES
Wed, February 25 2004

The fix applied by DNote 490.08 caused ^INCLUDE and ^ATTACH directory commands to fail with GETSTATUS SOFTERROR 123. This unintended side-effect is now fixed.

490.08 COPYBD DOES NOT WORK FOR NON-PU USERS
Tue, February 17 2004

The COPYBD option discussed in Dnote 490.06 did not work correctly for print requests created by non-privileged usercodes and the attempted COPY for each file would fail with security violations. This oversight has been corrected.

490.07 FIX COMMAND RESPONSE HEADINGS
Thu, January 29 2004

MAILLIB change 490.06 caused some command response headings to be incorrectly displayed. This problem has been corrected.

OUTLOOK marks the incoming email with a red exclamation mark.

490.06 IMPLEMENT OP COPY FOR BACKUP FILE RETENTION
Wed, January 28 2004

Previously, MAILLIB did not preserve backup files printed by the Virtual Mail Server regardless of the settings of the PS DEFAULT PRINTCOMPLETIOn and PS DEFAULT PRINTRETENTION settings. This meant that print requests could persist in the PS SH COMPLETED list but their backup files would have already been removed. The only way to prevent this behaviour was to mark the request or individual files with SAVEBACKUPFILE set to TRUE.

For those sites wishing to preserve requests with PRINTRETENTION set, a new command has been implemented, OP, which will allow global MAILLIB options to be applied. Currently, only one option exists - COPYBD - which controls MAILLIB backup file handling behaviour.

--- MAIL -------- OP ------+--------------------------+--------|
                           |                          |
                           +--- - ---+---- COPYBD ----+
                           |         |
                           +--- + ---+

When the COPYBD option is set, all print files printed by MAILLIB's Virtual Mail server will be first copied as a new file with the prefix MAILBD as the first level of the name, unless this first level is a usercode. When MAILLIB has copied the file, the file will be printed and then automatically removed. The original backup file is then handled by the Print System according to the PRINTCOMPLETION and PRINTRETENTION and will be removed or retained for the appropriate time.

This procedure has been adopted because it is not practical to retrieve the system settings of PRINTCOMPLETEION and PRINTRETENTIOn because the mail server interface is not presented with these settings by the PRINTS software.

490.05 IMPLEMENT OP PRIORTY AND READRECEIPT
Wed, January 28 2004

Two new ^OP variants are now available for use with the Supervisor OPAL MAIL function and programmatic calling of the MAILMAN library entrypoint.

^OP READRECEIPT will generate a 'Disposition-Notification-to' entry in the body of the email triggering the email client to request a read receipt, if supported by that email client.

The ^OP PRIORITY HIGH and ^OP PRIORITY LOW variants allow an email to be sent with an 'Importance' header of HIGH or NORMAL. A setting of HIGH may be interpreted in various ways by different email clients e.g.

OUTLOOK marks the incoming email with a red exclamation mark.

The new ^OP modifiers are shown below:

 --- ^  OP -------+--- READRECEIPT ----------------+---------------|
                  +--  PRIORITY ----+-- HIGH ------+
                                    +-- LOW -------+

As with all ^OP modifiers, the ^ must occupy the first character of any new line.

490.04 CORRECT MIME SPECS FOR CONTAINERS
Tue, December 2 2003

The MIME content specifications for the transmission of Unisys wrapped containers caused the attachment to become corrupted and unusable if sent to a Mac running Eudora. Although the incorrect specs did not seem to cause problems on PC's, the correct specifications have now been applied.

Also, for emails with HTML content in the body of the message, MAILLIB was not resetting its internal HTML flag by the time any attachments were being processed. This meant that, depending on the email client, there could appear instances of the string '<BR>' after the signature.

This problem is also fixed.

490.03 GIVE TIMEOUT AFTER READ HANG
Tue, November 11 2003

MAILLIB will now give a Read Timeout error whilst waiting for input from the specified mail server for more than 60 seconds. Previously, it has been reported that MAILLIB can hang indefinitely with a connection open to a mail server that has died or hung. In such cases, the TCPIP connection persisted and could not be closed unless the caller was DS-ed. Now, such hung emails will be timed-out after 60 seconds and will be marked with an error of -554, which requires a MODIFY command to allow re-processing.

490.02 TRY EMAIL USERDATA ATT IF NO 'TO:' IN NOTE
Thu, October 23 2003

Previously, the only way to assign an email address to any print request handled by the Virtual Mail Server was to assign a 'To:' header in the NOTE attribute. Now, if the 'To:' header is absent, MAILLIB will look at the EMAIL attribute associated with the owning usercode in the USERDATAFILE. For example, the MAKEUSER input for an existing usercode would be:

USER META EMAIL="BOBNIAN@METALOGIC.EU.COM"

If a 'To:' header is present in the NOTE attribute, this value will always override the USERDATAFILE setting.

490.01 HANDLE EMPTY BD FILES/HANDLE CORRUPT SUBJECT
Mon, August 18 2003

MAILLIB will now correctly handle the printing to email of an empty backup file; previously, the Virtual Mail server would have failed with a I/O ERROR: END OF FILE and disabled the printer device. This problem is now fixed.

Also, it was possible for a SHOW QUEUE command to fault if any of the queued emails had a corrupted subject line. The cause of the corruption has been fixed.

480.13 FIX ^ATTACHBD FUNCTION
Fri, July 25 2003

The ^ATTACHBD and ^INCLUDEBD functions will now correctly process the *BD files for the given job number. Previously, MAILLIB would refuse to find any files in the directory. In addition, MAILLIB will now provide extra information in the email if a file search fails.

For programmatic calls of MAILLIBs' MAILMAN procedure, the 'To:' parameter (ML_TO) was not being preserved for further MAILMAN calls by the same program, which could cause these later calls to fail. The ML_TO parameter is now left untouched by MAILMAN.

480.12 ALLOW EMAIL ADDRESS WITH APOSTROPHE
Tue, July 1 2003

MAILLIB now permits email addresses that include the apostrophe character as well as several other RFC-822 permitted characters that were previously omitted.

480.11 EXTEND RETRYABLE MAILS & FIX TEST BUG
Fri, May 30 2003

MAILLIB will now better handle certain types of emails that originally failed with an error that may be retried. Typically, this requires some form of operator action to resolve the problem ,e.g. a -552 error means that the server does not have enough storage for the mailbox specified in a 'To:', 'Cc:' or 'Bcc:' address. In this case, MAILLIB will now queue the email and it will appear 'Marked as exception' in the response to a SHOW QUEUE command.

Assuming that mailbox storage is now available, the email may be scheduled for re-processing by using a new command, MODIFY:
TT MAIL MODIFY 12345

where 12345 is the email transaction number. This resets the last to error flag and allows the email to be processed again.

Any queued email that has a 'retryable' error will appear in the response to a SHOW QUEUE command:

TT MAIL SHOW QUEUE

--- MAIL Library response ---
--- 1 Queued MAIL Messages ---
#1162 *SMTP/IPP/20030516/"MAILTEST@metalog."/01162 160.4 Kb
Subject:Print files from *SYSTEM/PRINT/BACKUP/PROCESSOR #709
Mail marked exception (-552)

Retryable errors include -552(mailbox storage exceeded), -554 (failed transaction),-452 (insufficient storage) etc.

Also, using the TEST command with multiple long email addresses could have caused MAILLIB to fault with a SEG ARRAY error. This problem is now fixed.

480.10 PREVENT CPU LOOP FROM MALFORMED ADDRESS LIST
Tue, April 8 2003

If the 'To:' part of a MAIL message header consisted of extraneous delimiters e.g.:

'To:ian@metalog.com,,bob@metalog.com,,,'

then MAILLIB would go into a processor loop scanning the multiple commas. This problem is now fixed; MAILLIB will ignore any extraneous delimiters(,;) in messages headers.

480.09 ALLOW OVERRIDE OF SINGLE LEVEL TCPIP DOMAINS
Wed, February 19 2003

On systems where the TCPIP domain name consists of only one level (instead of 'a.b' or 'a.b.c'), any mail sent from that system, even with a full email address, would fail because the internally generated MAILLIB-supplied FROM address consists of the form:

test@hostname

which will be rejected by all mail servers. MAILLIB will always verify email addresses against the TCPIP domain name to prevent spoofing. Even an override of the FROM address does not work because MAILLIB does not permit an alternate REPLY or FROM if the domains are radically different. For this reason, it is desirable that the TCPIP default domain has multiple levels (e.g. POWEREDGE.METALOG.COM).

To resolve this issue, MAILLIB now determines if a single-level TCPIP domain exists; if so, MAILLIB will override this with the default assigned domain name (as given by MAIL DOMAIN command). This allows emails to be verified by MAILLIB and the mail server using a valid y domain.

480.08 IMPLEMENT IPADDRESS COMMAND
Thu, October 31 2002

The IPADDRESS command has been implemented to allow a site with multi-homed IP addresses, to configure a default MYIPADDRESS setting for all SMTP connections to the network mail server. The IP address must be valid for the Clearpath sending emails or indeterminate behaviour may result.

The syntax is shown below:

      ---- IPaddress ------+-----------------+------------------!
                           +--- <IP addr> ---+
                           +---   -   -------+                      
The <IP addr> must be the appropriate format e.g. 192.168.0.2 and cannot exceed 15 characters. Any assignment can be removed by using the command:

TT MAIL IPADDRESS -

The current setting of IPADDRESS can be seen in response to a STATUScommand with the legend 'Multihomed IP addr:'.

Also, MAILLIB's email validation will now permit addresses with any of the additional characters '+','~' and '\'. Please note that MAILLIB does not perform rigorous, extensive validation of the address but enough to check basic format.

480.07 FIX HANG OPENING SERVER CONNECTION
Tue, October 15 2002

On occasion, even though a port connection has been established with the specified mail server, it is possible that the server would refuse to initiate the dialog. This caused the MAILLIB caller to hang indefinitely leading to subsequent requests issued to the same caller (e.g. Supervisor) queuing requests. It is not known why some servers remain in this state but because this problem has been observed with different mail servers and operating systems, it is likely to be a or TCPIP/networking issue.

MAILLIB will now wait 60 seconds for the dialog to commence after the SMTP connection has been made. If the dialog does not start, MAILLIB will automatically queue the email in progress and return a -999 result. The MAILLIB log will reflect a 'Read Timeout' error in such circumstances.

480.06 DEFAULT SIGNATURE UPDATE
Fri, September 6 2002

MAILLIB's default signatures have been modified slightly to now include the transaction number allocated during the email generation.

480.05 MINOR DEBUG ENHANCEMENT
Mon, July 8 2002

MAILLIB will now correctly show the last line (#900), if available, in any email sent by the OPAL MAIL function.

Some minor changes have been made to MAILLIB's debug facilities.

480.04 ADD COMPRESS AND LONG NAME OPTIONS
Wed, June 19 2002

MAILLIB now has options to allow callers to change the PC name format of attached files and to control trailing spaces removal. These features can be utilised in several ways using a new ^ modifier and run-time file-equation.

The OP modifier has 4 settings:

    -- ^OP -+-- LONG ------+-------------------------------!
            +-- SHORT -----+
            +-- COMPRESS --+
            +-- NORMAL ----+
            +-- RESET -----+ 
When a line in the email body starts with ^OP LONG, any SUPERVISOR ODTSequence or programmatic MAILMAN caller will effect change in the PC name generated by ^ATTACH commands. For example,

^OP LONG
^ATTACH *DATA/TEXT/EXAMPLE ON DEV

would generate the file name 'DATA-TEXT-EXAMPLE.TXT' instead of 'EXAMPLE.TXT' which is the normal behaviour. This can also be provided by the MAILER utility by setting the FLEXIBLE attribute to any file-equated ATTACH file:

RUN *METALOGIC/MAILER("ian@metalog.com","TEST");
FILE ATTACH(TITLE=*DATA/TEST/EXAMPLE);
FILE ATTACH1(TITLE=*DATA/MYPC/NAME, FLEXIBLE);

In the above case, the long PC name format only applies to ATTACH1. The ^OP SHORT command is used to return to the normal single-level PC name.

Use of ^OP COMPRESS allows the removal of trailing spaces for file attachment an includes. In the case of ^ATTACHs, only DATA files are eligible for space removal whereas any blocked, text-based file used with an ^INCLUDE can be processed. This is because many text file kinds have sequence numbers which are preserved in MAILLIB attachments.

An ^OP NORMAL command disables the space removal capabilities. Note that, once set, any ^OP command will apply to all ^ATTACH and ^INCLUDE statements until it is disabled. Using the TRIMBLANKS file attribute, the MAILER utility can be persuaded to perform space removal for individual files:

RUN *METALOGIC/MAILER("ian@metalog.com","TEST");
FILE ATTACH(TRIMBLANKS,TITLE=*DATA/TEST/EXAMPLE);

The ^OP RESET command will return both controls to their original settings; please note that, currently, there is no way to alter the global behaviour of file-naming and space removal. Also, the Virtual Mail server facility is unaffected by both mechanisms though the actual TRIMBLANKS setting on a print file will be controlled by the PrintS System in the usual way.

For users calling MAILLIB directly, both these options can also be globally set using the OPTION parameter in the MAILMAN call. The following single bit fields controls are shown below:

LONGNAMESF = [0:1]
TRIMBLANKSF = [1:1]

For example, in ALGOL:

OPTION:=* & TRUE LONGNAMESF & TRUE TRIMBLANKSF;
MAILMAN(ML_TO,ML_CC,ML_BCC,ML_FROM,ML_REPLY,ML_SUBJ,ML_TEXT,OPTION);
....

Also, MAILLIB now retains the original case of any user-provided PC names assigned to an ^ATTACH command; previously, the name was always unconditionally up-cased.

480.03 FIX PRINT REQ MAX MSG EXCEEDED
Mon, May 27 2002

Previously, it was possible for MAILLIB to reject the printing of a perfectly valid Prints Request with the error:

Rejected print req #7595 Job #37841 Maxlines exceeds 0.0 Kb

This only occurred if message limiting controls by usercode were in force and the NOTE attribute was not set up for the first file to be be processed (usually a SUMMARY file) by the Virtual Mail server. Depending on the level of PRINTS, it is not uncommon for a SUMMARY file to not have a NOTE even though other files in the request are fine.

Now, MAILLIB will unconditionally determine any usercode message limits by checking the owner of the SUMMARY file in the request, regardless of the presence of a NOTE entry.

480.02 FIX CORRUPT ATTACH OF BLOCKED DATA
Fri, April 5 2002

Previously, MAILLIB was inocrrectly handling the attachment of blocked DATA files with FRAMESIZE=48; these files were being treated as if they had FRAMESIZE=8 and records were consequently truncated. This problem is now fixed.

480.01 FIX FILE TRANSLATION BUG AND DIR ATTACHES
Mon, March 18 2002

At sites where MAILLIB uses alternate codeset translation, text files processed by ^ATTACH or ^INCLUDE will now be correctly translated. Previously, this was not being performed in all cases.

Some inconsistencies in the ^ATTACH handling of directories, with or without *, usercode or 'ON family' have been resolved.

Lastly, MAILLIB used to abort a Virtual Mail print request if any associated SUMMARY file did not have an assigned NOTE attribute. There are several ways this situation could arise: for example, if PS DEFAULT JOBSUMMARY was set to UNCONDITIONAL and a print request was generated by a SPLIT from a CANDE session. This problem is also fixed.

470.74 FIX ^ATTACH TO OMIT FILE IF SAME AS DIRECTORY
Thu, February 28 2002

When an ^ATTACH request is processed for a directory of files, MAILLIB will now exclude any file that matches the original selected directory.

For example, ^ATTACH A/= will now omit the file 'A' if one exists but will process all other files in the same directory.

470.73 DON'T SHOW "NO FILE" ERROR FOR NICKNAMES AT INITIALIZATION.
Tue, February 26 2002

During initialization, MAILLIB attempts to load the default NICKNAMES file. If the file was not present, MAILLIB would erroneously report an OPERROR #2 display message. Since the presence of a NICKNAME file is optional, this behaviour has been suppressed.
Also, under certain circumstances, it was possible for print requests routed to MAILLIB's Virtual Mail system to be marked as EXCEPTION with an accompanying error message of:

"Rejected print request nnn:Total Lines exceeds 0.0 Kb"

This problem is now fixed and appropriate error messages are also now written into the Mail log.

470.72 FIX REBUILD NICKNAMES
Fri, February 8 2002

The REBUILD NICKNAMES command was not correctly loading all nick names from the MAILLIB nicknames file. Loading a new file with this command may have caused an INVALID OP fault.

Also, MAILLIB would fault with an INVALID INDEX if the number of email recipients exceeded 100. Both these problems are now fixed.

470.71 USE REQUESTNOTE FOR SUBJECT NOT SIG
Tue, January 29 2002

Previously, the REQUESTNOTE attribute was used by the Virtual Mail server to allow users to override the default MAILLIB signature (by simulating a ^SIG operator). This feature has now been replaced.

Now, the PRINTCHARGE modifier should be used to override signature and REQUESTNOTE is now used to optionally supply an alternative subject. It should be noted that the signature title passed to PRINTCHARGE *must* start with a "^" or "]" character; any other text strings will be treated as conventional charge codes.

For example:

PRINTDEFAULTS=(NOTE="To:Support",PRINTCHARGE="^SUPPORT",                     
                  REQUESTNOTE="Test listings from live job");

Although a 'Subject:' header can be included in the NOTE attribute, REQUESTNOTE allows easier assignment of subject where NOTE is already pre-defined for the usercode in the Userdatafile.

The MAIL NEWS command has been deimplemented. The latest changes and fixes are fully documented in the *METANOTES/MAILLIB file supplied with the release and in documentation available via our website at http://www.metalog.com.

Lastly, MAILLIB will NOT now automatically assign a default 'Reply:' address if a valid 'From:' header has been already assigned. Previously, the default postmaster address would have been used automatically if no 'Reply:' had been assigned. Note that MAILLIB will only permit this behaviour if the 'From:' address is identified as a member of the default TCPIP domain. Users can still override this feature by using their own 'Reply:' headers.

470.70 ALLOW ^ATTACH WITH DIRECTORIES
Tue, January 29 2002

MAILLIB will now recognise and process directory specifications passed by the ^ATTACH or ^INCLUDE commands; previously only single files were permitted. For example:

^ATTACH FLEX/=

This will process all files in the FLEX directory under the caller's user usercode and family. As previously, MAILLIB will only ^ATTACH symbol files, containers, stream and zip files; ^INCLUDE will only handle stream and symbol files.

Please note that MAILLIB will handle as many eligible files exist in the directory - there currently is no enforced limit.

Also, a new MAIL command has been implemented called MINLINES:

  ---- MINlines -----+---------------+----------------------|
                     +-- <integer> --+ 

By default, all print file processed by the MAILLIB Virtual Mail server are automatically handled as file attachments, regardless of size. The MINLINES command allows the MAIL administrator to control this behaviour by assigning a minimum threshold value, in lines, for each print file. The number of lines is retrieved from the backupfile and if its value is less than the threshold, the file will be included instead.

By default, MINLINES is set to 0.

470.69 IMPLEMENT MESSAGE LIMITS & ADDRESS VALIDATION
Tue, January 29 2002
MAILLIB now has the capability to enforce user-specified message size limits on individual emails, controlled by the usercode of the sender. This change is also accompanied by the ability to authenticate the recipient address of any email sent by MAILLIB against a user-provided list.

These controls are maintained using the LOAD USERLIMITS and LOAD ADDRESS commands:

-- MAIL -- LOAD -+-- USERlimits -+---+-------------------------+---|
                 +-- ADDResses --+   +-- FROM -- <filename> ---+ 
If no external file is provided then MAILLIB will search for default names:
USERLIMITS command -> *METALOGIC/MAILLIB/USERLIMITS
ADDRESSES command -> *METALOGIC/MAILLIB/ADDRESSES

These files should reside in the same directory as the MAILLIB library codefile. If 'FROM' is used then any external file can be used. The filekind of the file can be any symbolic, data or text format. Unlike the implementation of nick names, the data from the USERLIMITS and ADDRESSES files are stored into the MAILLIB config and preserved over restarts.

The implementations are described below:

USERLIMITS file

Each record in the LIMITS file should appear as:

----+-- <Usercode> --+----+--- <Size in KB>----+-------------------|
+-- *DEFAULT* ---+ +--- UNLIMITED ------+
+-- SYSTEM-NODE -+
                                                                              

The <usercode> modifier should be a valid entry in the Userdatafile. The <Size in KB> can be any integer or real value and reflects the total permitted size for an individual email generated by the specified usercode.The *DEFAULT* modifier allows a 'default maximum' message size to be associated with all other usercodes *not* appearing in the USERLIMITS file. And, the SYSTEM-NODE identifier reflects any email generated by jobs with the '*' usercode. As part of this change, any emails generated by a '*' session used to be assigned a pseudo usercode of 'ODT' - this is now not the case.

Example:

META 4000
*DEFAULT* 1000
TAPELIB 2000

In the above case, all usercodes except META and TAPELIB, will be assigned a limit of 1 megabyte. If a *DEFAULT* entry does *not* appear in the USERLIMITS file then all other usercodes have UNLIMITED as their default.

When the LOAD USERLIMITS command has been performed, the revised limits active immediately and can be seen using the command:

TT MAIL SHOW USER

When in force, MAILLIB will attempt to calculate the size of the message including file attachments, includes and body text. With a mixture of include and attach, ^INCLUDE statements and body text are always processed first. MAILLIB will include a warning message into the body of the text if a file could not be processed because of limits.

The USERLIMITS mechanism also applies to email generated by the Virtual Mail server, In this case, MAILLIB uses the number of lines determined from each backup file, then multiplied by 132, to guess-estimate the msg size. Note that email clients such as Microsoft Outlook will often report emails as much larger than they really are.

ADDRESSES file

A similar mechanism exists for the ADDRESSES file which consists of a list of valid email addresses maintained by the MAIL administrator. MAILLIB will attempt to check each address for validity and, if a bad entry is found, the LOAD will be aborted.

MAILLIB will recognise certain wild-card characters to allow, for example, all users at a single domain to be permitted. The permitted wild-cards are '=', "#" and "?" which map respectively to any string (0..n chars), a single numeric character and a single character of any type.Example:

ian@metalog.com
bob@metalog.com
=@unisys.com
meta=@tesco.net

Here, the '=@unisys.com' entry will permit any email address in the unisys.com domain to be allowed. All other email addresses that do not match the above list will be rejected. By default, if no LOAD ADDRESSES command has been applied, all outgoing email addresses are considered valid.

The 'TT MAIL SHOW ADDR' command will show the current list of acceptable email addresses.

UNLOAD command

User limits and address valdation, described above, can be deactivated using the UNLOAD command:

 
-- MAIL -- UNLOAD -+-- USERLIMits ----+-----------------------------|
	               +-- ADDResses -----+

The selected control will be immediately disabled and apply to all new email requests. The change is also updated in the CONFIG file and applies across future restarts of MAILLIB.The usage of LOAD and UNLOAD commands are logged in the system SUMLOG and can be monitored.

470.68 SEG ARRAY ON LONG TEXT LINES
Fri, January 18 2002

When MAILLIB was processing a text of line, either from a file or by a direct call using the MAILMAN entrypoint, the call would fault with a SEG ARRAY error caused by text longer than 600 characters. This problem, which did not affect any Supervisor MAIL requests, is now resolved.

470.67 RESTORE TRANSACTION NUMS IN LOGGED FAILURES
Wed, November 28 2001

The transaction number of any failed or queued email was not being written into the SUMLOG in most cases. This oversight has now been rectified.

Further, under certain circumstances, MAILLIB might fail to find files specified by ^ATTACH requests if no 'ON <familyname>' was specified in the file title. Normally, MAILLIB uses the caller's user and family to locate the file. This problem would usually occur where multiple ^ATTACH or ^ATTACHBD requests were processed in the same MAILMAN call and would ultimately depend if any familynames were included in these requests. These problems are now fixed.

470.66 FIX CODESET TRANSLATION PROBLEM
Wed, November 21 2001

The CODESET feature implemented by patches 470.60 and 470.61 was inadvertently broken by recenet updates. This functionaility has now been restored.

470.65 OMIT ^ATTREM TEXT FROM VIRTUAL PRINTING MAILS
Date: Tue., October 16 2001

DNote 470.63 inadvertently included extraneous command text in all emails that were generated by the Virtual Mail server. This text has now been removed.

470.64 ENSURE SERVER IP ADDRESS WORKS AFTER RESTART
Date: Thu, October 11 2001

After a restart of MAILLIB and the mail server was assigned to an IP address, MAILLIB would not correctly set up the SMTP port file attributes causing all emails to be queued. The problem could be detoured by assigning the mail server a resolvable TCPIP name or redefining the IP address as server This problem is now fixed.

470.63 FIX MAILER SECURITY
Date: Thu, October 11 2001

This patch addresses a security issue with the MAILER utility. As a consequence, the MAILLIB library now has appropriate granulated privileges assigned to the codefile using the MP command.

470.62 ALLOW ACCESSCODES ADDRESSES FOR VIRTUAL PRINTING
Date: Thu, October 11 2001

MAILLIB will now allow ACCESSCODEs to be used as email recipients by the Virtual Mail server implementation. This is controlled by assigning the string "To:[ACCESS]" to the NOTE attribute instead of a simple email address. If the Virtual Mail server detects this and the task that created the print request has an ACCESSCODE, then this will be used as the email recipient.

For example, a print request is created by user META and Accesscode IPP and the NOTE attribute is set to "To:[ACCESS]". When printing, MAILLIB will consider the NOTE to be "To:IPP". For the email to be handled correctly, a default domain must have been previously set up so that the address is correctly expanded or IPP is a valid mailbox on the SMTP server or, lastly, IPP exists as a MAILLIB nickname entry.

470.61 FIX CODESET TRANSLATION/SERVER SWITCHING
Date: Tue., August 7 2001

After installation of MAILLIB 470.60, the default destination code set of ASCII would not have been correctly. This would have required manual TT MAIL CODESET ASCII command or a restart of the MAILLIB library (using TT MAIL QUIT and TT DELINK MAILLIB). If this was not done, sending any email would generate numerous translation warning messages. This problem has now been fixed; in addition, if MAILLIB detects any translation errors then a single warning message will be displayed and all further translation efforts will be omitted.

Previously, if MAIL SERVER was assigned to an IP address and then switched during the same session to a normal host name, any future emails would fail because MAILLIB would erroneously attempt to assign this hostname as an IP address. This problem is now fixed.

Lastly, if a new MAILLIB config was initialized, MAILLIB would not recognize any previously-assigned server provided by the Magus config variable MAIL_SERVER. This problem, which caused a default server name MAILSERVER to be assigned (easily overridden), has now been fixed.

470.60 INTERNATIONALIZED CHARACTER CODE SET SUPPORT
Date: Mon, July 30 2001

MAILLIB will now, using CCS, allow a site to assign a default character code set to be used for translation purposes when sending mail form a Clearpath system. MAILLIB will now inspect the current CCS settings and determine the base code set in use on the system, for example, the SWISS CCSVERSION uses the LATIN1EBCDIC code set by default.

By default, where necessary, all EBCDIC-style data is translated to ASCII before being passed to the mail server. This default can be changed using the MAIL CODESET command:

   TT MAIL CODESET LATIN1ISO
   
On a SWISS system, the above command would replace ASCII with LATIN1ISO as the destination code set. The code set must be ISO or PC format and must be compatible with the system base codeset e.g. the standard ASERIESEBCDIC codeset is not translatable, using CCS routines, into the LATIN1ISO codeset but can be translated into ASCII, CODEPAGE850 etc. MAILLIB uses the CENTRALSUPPORT system library to tell him which translations are permitted.

Any CODESET changes are held in the MAILLIB config file and are held over restarts

470.59 IMPROVED HOSTNAME HANDLING
Date: Mon, July 30 2001

MAILLIB can now use server names which include domain names and graphic characters such as "-" or "_". Previously MAILLIB expected server names to be simple alphanumeric strings

470.58 ALLOW PC ATTACHMENT NAME CHANGES
Date: Mon, July 30 2001

The ^ATTACH control function can now take an optional modifier allowing allows the user to determine the name of the attached file as it appears in a PC email client. The PC name should be a single-level name, ideally with a valid PC extension, should be encased with the control characters '[' and ']' and immediately follow the ^ATTACH modifier.

For example:

   ^ATTACH [MYFILE.LOG] *BATCH/FILE/LOG                                         
   ^ATTACH [RECORD.CSV] *SUPERVISOR/RECORD/MONDAY/4
   
If the PC name is not present, then MAILLIB will determine the name and extension of the attached file, as before.

For file attachments handled directly by the MAILER utility or the Virtual Mail server, the same behaviour can be implemented by the file equation of the FORMID attribute. FORMID must be set to a quoted string with an embedded '.' signifying a PC name. For example:

   RUN *METALOGIC/MAILER("SUPPORT@METALOPG.COM","MAIL FILES");                  
       FILE ATTACH(TITLE=DATA/CSVDATA,FORMID="DATA.CSV")
The file attachment will appear in the email message as "DATA.CSV".

Assigning FORMID to a print request, with a DESTINATION set to MAIL, directly or by a PS MODIFY will have no effect. However, if you wish to use FORMID, it is important to set FORMID on the Virtual Mail printer device to *DONTCARE*; this allows PrintS to prevent any request to the device ignoring any FORMID:

   PS MODIFY MAIL FORMID="*DONTCARE*"
   
Also, mail headers other than "To:" will now be scanned and assigned from the NOTE attribute during printing to a Virtual Mail destination. Previously, these headers would be included as part of the recipient list causing the email to be incorrectly sent.

470.57 FIX BROKEN POSTMASTER AND QUEUED REJECTED MAIL
Date: Mon, June 18 2001

The changes described by Dnote 470.55 inadvertently broke the TT MAIL POSTMASTER command. Invariably, any use of the command would return a syntax error and corrupt any current post master setting. This fault is now fixed.

Also, if a queued mail, held on disk, was subsequently sent to the mail server but was rejected due to a bad email address, the SMTP disk file would remain on disk. Any subsequent re-scan of the SMTP directory by MAILLIB during a restart or in response to a MAIL REBUILD QUEUE command would cause the message to be re-processed each time. Now, MAILLIB will automatically change such SMTP files to BAD/SMTP

470.56 FIX DROPPED DEFAULT DOMAIN
Date: Tue., June 5 2001

When using email addresses without a domain suffix (i.e. an address without a '@' component), MAILLIB was not attaching the default configured domain name which caused the email to be rejected. This problem is now fixed

470.55 COMMENT NICKNAMES/BOUNCED MAIL ADDRESS
Date: Sat, May 26 2001

MAILLIB will now accept comment information prefixed by the % character anywhere in a NICKNAMES file. All text following the % will be ignored.

For mail that could not be delivered (because of illegal email address, domain or unknown host), the bounced mail was being sent to the original Clearpath generated FROM address created from usercode and TCPIP domain name. This should only be the case if no POSTMASTER was established; if the POSTMASTER address is valid, this will be used as the MAIL FROM content in the mail dialog.

- ABORT command did not trap in-process emails that were being

- The SUSPEND&REJECT command can now be used when a SUSPEND is Nicknames or mailing list entries held in the MAILLIB NICKNAMES file can now be associated with a text description. For example, the mailing list SUPERLIST can be associated with the text "Supervisor Mailing LIST". This description is inserted into the message body as the "To:" header instead of, for example, SUPERLIST@METALOG.COM. The description must appear immediately after the name prefixed by a "=" and before the ":".

470.54 MORE MAILLIB FIXES/NICKNAME IDENTITY
Date: Mon, May 21 2001

This patch addresses a number of faults that are now fixed:

  - ABORT command did not trap in-process emails that were being                
    read from a queued email.  ABORT could, in these circumstances,             
    fail to remove the *SMTP queued file
                                            
  - The SUSPEND&REJECT command can now be used when a SUSPEND is                
    already in force (and vice versa); no RESUME is required first
    
Nicknames or mailing list entries held in the MAILLIB NICKNAMES file can now be associated with a text description. For example, the mailing list SUPERLIST can be associated with the text "Supervisor Mailing LIST". This description is inserted into the message body as the "To:" header instead of, for example, SUPERLIST@METALOG.COM.

The description must appear immediately after the name prefixed by a "=" and before the ":". For example:

  STIRLING =Local Metalogic mailing list:                                       
     ian@metalog.com, bob@metalog.com;
     
470.53 ALLOW LOWER CASE MAIL COMMAND INPUT/NICKNAME FIXES
Date: Wed, May 9 2001

MAILLIB was inadvertently disallowing lower case input via the TT MAIL command interface. Also, the number of nicknames loaded by a MAIL REBUILD NICKNAMES command, recorded in the SUMLOG display message, was usually incorrect.

Lastly, a nickname would not be correctly decoded if it was not the first address in the "To" list. This could caused the mail to be rejected with -550 error depending on the mail server. Also, MAILLIB will now insert text into the Comments header of the message if one or more MAILLIB nicknames have been decoded.