From: MERC::"uunet!CRVAX.SRI.COM!RELAY-INFO-VAX" 29-APR-1992 00:53:57.91 To: info-vax@kl.sri.com CC: Subj: RE: Set forward in VMS MAIL From: BRYDON@ASL@PSI%HDSRTR@MRGATE@SNDRTR To: "info-vax@kl.sri.com"@M_INTERNET@MRGATE@SNDRTR, "jack@syd.deg.csiro.au"@M_INTERNET@MRGATE@SNDRTR In a weeks-old message, Jack N. Churchill (jack@syd.deg.csiro.au) asks: >Detected an odd problem with VMS MAIL. A user sets forward his mail to an >account on another DECnet node. A mail is sent to his first account but >fails with an error something like: RMS-W-RTB 281 byte record too large for >user's buffer. This is caused by a long 281-byte record in the message >itself. I never noticed this problem before and I'm wondering if it's a >simple quota problem in the account or a system paramater problem or a DECNet >problem (e.g., buffer size). The strange thing is I can make it work by >sending a file with the same message via a dcl command like: > >$ mail file.txt username > >instead of using the SEND command in MAIL and using the tpu editor to >construct the message. Anyone knows what's going on, please? Nobody answered the poor guy, so let me take a crack at it. This is a mail bug that has been whipped to death on the 'foreigners' mailing list. This mailing list is of concern to people who deal with foreign mail protocols. The problem occurs because of an incorrect change within MAIL from block mode data transfer to record mode (it's a "bug"). First of all, this problem only happens if you are dealing with mail messages (normally text) with lines longer than 255 characters. If you are sending text with records less than that you will never see the problem and if you are sending "/foreign" messages you never see it. Inter-node mail delivery occurs in one of two modes: block mode transmission and record mode. With block mode, the message data is broken up into chunks of 512 bytes and the remote system reassembles it properly. All block mode data records seen on the network will be exactly 512 bytes except for the last record, which may be (and likely is) shorter. If record mode is used, each line of the message is sent separately as a separate record. The record sizes as seen on the network are exactly the length of each line in your message and are therefore from zero up to the maximum of 255 bytes. The actual algorithm to determine whether to use block or record mode is well defined but a bit lengthy to describe here. Block mode is 'usually' used for text messages and is required for '/foreign' messages. Things all work fine if you are sending directly to another node on the network directly. The complication to things is Mail's support of something called Poor Man's Routing, often abbreviated as "PMR". It is legal and supported to send mail to an address such as x::y::z::username, where x,y and z are valid DECnet nodes on the network (hmmm, well, they can include foreign mail transport specifiers such as blah%x:: as well). PMR breaks the logic for determining block mode or record mode while the packets are in transit. Consider the case where I am MYNODE::ME and want to send a text message to YRNODE::YOU. All message types described here will work correctly if sent to YRNODE::YOU. If however I send to NODEX::YRNODE::YOU, the mail code on NODEX incorrectly makes a change from block mode to record mode, depacketizes the block mode records and the data is sent from NODEX:: to YRNODE:: in record mode. If the text of the message contains any lines longer than 255 characters, the error you cited occurs. If the message is a foreign message, the problem does not occur - just with text. For example: $ mail long.tmp aslcl3::_brydon/notrans/subj="Long record, no PMR" $ mail long.tmp aslcl2::aslcl3::_brydon/notrans/subj="Long record, PMR" %MAIL-E-SENDERR, error sending to user _BRYDON at ASLCL2 %RMS-W-RTB, 400 byte record too large for user's buffer $ mail test.exe/for aslcl3::_brydon/notrans/subj="foreign msg, no PMR" $ mail test.exe/for aslcl2::aslcl3::_brydon/notrans/subj="foreign msg, PMR" Ahem. So, back to the original question. When somebody forwards their mail somewhere else, PMR and the problems associated with it occur, because... If a mail message is sent from MYNODE::ME to YRNODE::YOU and YRNODE::YOU has mail forwarded to XNODE::HIM, it is as if you are sending to YRNODE::XNODE::HIM. As you observed, when you send a 281 byte message to somebody that has no mail forwarding, it delivers correctly. If it is sent to a forwarded address, it will fail. If you send a foreign message it will also work fine. Mail bug. HTH ____________________________________________________________________________ Harvey Brydon | Internet: brydon@asl.sinet.slb.com Schlumberger Anadrill | FAX: (713)274-8399 200 Macco Blvd | Telex: 1565030001 SINET ASL SLB Sugar Land, TX 77478 | P.O.T.S.: (713)274-8000 x8281 or 274-8281 (d.i.d.) Conspiracy? Bush, Clinton and Perot are all southpaws...