Automatic Email processing before delivering to user

All types of networks, network stacks, and protocols supported by OpenVMS.

Topic author
joukj
Master
Posts: 224
Joined: Thu Aug 27, 2020 5:50 am
Reputation: 0
Status: Offline

Automatic Email processing before delivering to user

Post by joukj » Wed Sep 04, 2024 5:59 am

Hi,

Up to know I used DELIVER (http://vms.process.com/scripts/fileserv ... om?DELIVER) to do some processing (i.e. a virus check) before delivering the Email to the user.
However recently I came along some servers who send RFC-headers with longer lines than 256 characters. IIt sems that DELIVER chokes on this. I tried to change the maximum line length on all the open-statements in the PASCAL code, but without success. No idea how to proceed from here.

When searching the web I came along this documentation:
https://vmssoftware.com/docs/VSI_TCPIP_ ... D_VOL1.PDF
In chapter 4.3.1 it gives some ways to deliver a mail to a DCL-procedure. That is exactly what I need. However this documention from 2020 is for VSI TCPIP 10.6. I cannot fond this feature in the manuals of VSI TCPIP 6.0. Is this feature gone? or is there some way around?

Regards
Jouk

User avatar

m_detommaso
Master
Posts: 102
Joined: Thu Jun 06, 2019 6:57 am
Reputation: 1
Location: Brindisi (Italy)
Status: Offline
Contact:

Re: Automatic Email processing before delivering to user

Post by m_detommaso » Wed Sep 04, 2024 6:54 am

VSI TCP/IP for OpenVMS Version 10.6 was based on Process Software’s MultiNet for OpenVMS code base; the project has been abandoned in September 2020.

The only IP stack currently in development for Alpha, Integrity, and x86 platforms is TCP/IP Service for OpenVMS V6.0; it is based on HPE TCP/IP Service for OpenVMS V5.7ECO5. This new release consolidates the existing ECO kits and provides many new features.

Below is the announcement released by VSI :

"The second roadmap change is a shift in the TCP/IP network stack strategy. VSI focus has been on developing VSI TCPIP, based on the Process Software Multinet code base, as a replacement for VSI TCPIP Services for OpenVMS. However, VSI has decided to change direction and is planning new releases of VSI TCPIP Services for OpenVMS for Alpha, Integrity, and x86 to allow customers to maintain their current network configuration if they choose. These new releases will consolidate existing ECO kits and will provide updated cryptography in SSH, SFTP, and SCP. VSI will provide schedule details on new VSI TCPIP Services releases as our plans solidify."

The tools included in VSI TCP/IP release 10.6, which were based on the Multinet IP stack, are not available for TCP/IP Service for OpenVMS V6.0 (which is a completely different code).

I hope this helps,
/Maurizio


Topic author
joukj
Master
Posts: 224
Joined: Thu Aug 27, 2020 5:50 am
Reputation: 0
Status: Offline

Re: Automatic Email processing before delivering to user

Post by joukj » Wed Sep 04, 2024 7:48 am

Than I have realy to find out why DELIVER chokes on long input lines.

User avatar

arne_v
Master
Posts: 483
Joined: Fri Apr 17, 2020 7:31 pm
Reputation: 0
Location: Rhode Island, USA
Status: Offline
Contact:

Re: Automatic Email processing before delivering to user

Post by arne_v » Wed Sep 04, 2024 3:59 pm

I can only think of a few reasons:
1) open record length
2) string lengths
3) problems in VSI software and not in DELIVER

Do you have example, description and error message?
Arne
arne@vajhoej.dk
VMS user since 1986


craigberry
Active Contributor
Posts: 31
Joined: Fri Nov 17, 2023 11:27 am
Reputation: 1
Status: Offline

Re: Automatic Email processing before delivering to user

Post by craigberry » Wed Sep 04, 2024 4:15 pm

What are the Pascal open statements opening? If they are files, what sort of files are they? ANALYZE/RMS/FDL might tell you something, like whether they have a fixed record length.


lastovica@sciinc.com
Contributor
Posts: 18
Joined: Wed May 22, 2024 5:32 pm
Reputation: 0
Location: colorado, usa
Status: Offline
Contact:

Re: Automatic Email processing before delivering to user

Post by lastovica@sciinc.com » Wed Sep 04, 2024 5:15 pm

joukj wrote:
Wed Sep 04, 2024 7:48 am
Than I have realy to find out why DELIVER chokes on long input lines.
can you describe exactly what "chokes" means? do you receive any sort of an error message or explicit indication of a problem?
Norm Lastovica / SCI


Topic author
joukj
Master
Posts: 224
Joined: Thu Aug 27, 2020 5:50 am
Reputation: 0
Status: Offline

Re: Automatic Email processing before delivering to user

Post by joukj » Thu Sep 05, 2024 1:43 am

I changed all the open statements with updated record length (=512). String length are also updated. However deliver does some tricks with FAB/RAB. I even added the fab$w_mrs before opening the FAB. This should contain a copy of the data VMS-Mail puts through to DELIVER, but is of course deleted after the program finishes while writing a copy to the home-directory of the user. This copy contains all the data up to the long line, which is the first missing line in the file.
DELIVER issues an error message that appears in returned mails(but most of the time no returned mails appear). This message reads:

%%%%%%%%%%%% 30-AUG-2024 13:57:17.89 %%%%%%%%%%%%
%MAIL-E-SENDERR, error sending to user JOUKJ at LOCAL:.HOPAK
-DELIVER-E-MESREAERR, Error reading intermediate message file, status = 98728

If you look at the code this suggests that the error occurs at a $GET(RAB) statement.

Note that if all the line lengths are not longer than 256 characters everything works fine.


Jouk

User avatar

martinv
Master
Posts: 136
Joined: Fri Jun 14, 2019 11:05 pm
Reputation: 0
Location: Goslar, Germany
Status: Offline
Contact:

Re: Automatic Email processing before delivering to user

Post by martinv » Thu Sep 05, 2024 3:01 am

Jouk,

have a look at deliver.pas, line 150:

Code: Select all

  parameter_size     = 256;     (* Size of a single parameter in the
                                   MAIL.DELIVERY file. This is also the
                                   maximum size of lines read from any file. *)
That constant is used e.g. in the definition of the string type (which is used to define a "line") and in function get_line()

Code: Select all

    message_RAB.RAB$L_UBF := iaddress (line.body);
    message_RAB.RAB$W_USZ := parameter_size;
I have not yet tried to debug it, but it looks like an interesting subject.

HTH,
Martin
Opportunity is missed by most people because it is dressed in overalls and looks like work.
(Thomas A. Edison)


Topic author
joukj
Master
Posts: 224
Joined: Thu Aug 27, 2020 5:50 am
Reputation: 0
Status: Offline

Re: Automatic Email processing before delivering to user

Post by joukj » Thu Sep 05, 2024 3:42 am

changing the "parameter_size = 256; " to "parameter_size = 512;" was the first thing I tried, but it seems not to help

User avatar

martinv
Master
Posts: 136
Joined: Fri Jun 14, 2019 11:05 pm
Reputation: 0
Location: Goslar, Germany
Status: Offline
Contact:

Re: Automatic Email processing before delivering to user

Post by martinv » Thu Sep 05, 2024 3:57 am

The string type defined (as "varying [parameter_size] of char") as well as the RAB$W_USZ can take values of up to 65535. Why stop at 512? Try something like 2048 ;)

98728 clearly says %RMS-W-RTB, record too large for user's buffer
Last edited by martinv on Thu Sep 05, 2024 3:57 am, edited 1 time in total.
Opportunity is missed by most people because it is dressed in overalls and looks like work.
(Thomas A. Edison)

Post Reply