datri@convex.com (Anthony A. Datri) (09/07/90)
I wrote a program in the vein of nsb's eatmail to safely move mail from /usr/spool/mail into ~/Mailbox, but I've discovered that AMS_MailCollectionCommand gets run *after* /usr/spool/mail/joeuser is checked and collected. Am I missing something? I would think that if AMS_MailCollectionCommand (and apparently PersonalMailCollectionCommand as well) is set, that the system shouldn't collect from /usr/spool/mail/joeuser *at all*. In ams/libs/ms/mungenew.c, I find: if (homeUsesAMSDelivery < 0) { char SpoolFileName[1 + MAXPATHLEN], *HomeBox, *SpoolFile; int numfound; /* Only convert /usr/spool/mail-type stuff if we're checking our person$ HomeBox = GetPersonalMailbox(); sprintf(SpoolFileName, "%s/Mailbox", home); if (strcmp(HomeBox, SourceDir) == 0 || strcmp(SpoolFileName, SourceDir)$ SpoolFile = getenv("MAIL"); if (SpoolFile == NULL || *SpoolFile == '\0') SpoolFile = getprofile$ if (SpoolFile == NULL || *SpoolFile == '\0') { sprintf(SpoolFileName, "%s/%s", AMS_MailBoxPrefix, Me); } else { strcpy(SpoolFileName, SpoolFile); } mserrcode = ConvertIncomingMail(SpoolFileName, SourceDir, &numfound$ if (mserrcode) return (mserrcode); } } if (PersonalMailCollectionCommand) { int syscode; syscode = system(PersonalMailCollectionCommand); if (syscode) { char ErrorText[100+MAXPATHLEN]; sprintf(ErrorText, "Personal mail collection command %s failed with$ NonfatalBizarreError(ErrorText); AMS_RETURN_ERRCODE(EMSBOGUS, EIN_SYSTEM, EVIA_PROCNEWMSGS); } } if (AMS_MailCollectionCommand) { int syscode; syscode = system(AMS_MailCollectionCommand); if (syscode) { char ErrorText[100+MAXPATHLEN]; sprintf(ErrorText, "System mail collection command %s failed with c$ NonfatalBizarreError(ErrorText); AMS_RETURN_ERRCODE(EMSBOGUS, EIN_SYSTEM, EVIA_PROCNEWMSGS); } } Shouldn't the initial conditional change from if (homeUsesAMSDelivery < 0) { to if (homeUsesAMSDelivery < 0 && ( ! (PersonalMailCollectionCommand || AMS_MailCollectionCommand) )) { Also, just what is "PersonalMailCollectionCommand" anyway? It seems to be redundant given AMS_MailCollectionCommand, and I haven't seen mention of it in any docs. The scenario is that I run Messages on my diskless workstation, and mail physically resides on another machine. I want to safely collect mail from my mailbox there into ~/Mailbox, rather than take the chance of AMS on my workstation and binmail on the server stomping on each other. The server's /usr/spool/mail is mounted on my workstation because I've just been taking the chance, and also so that I can use "from" and any of a variety of xbiffy programs. But even when I specify AMS_MailCollectionCommand, /usr/spool/mail/datri gets read and truncated before my MailCollectionCommand gets run, so the latter never actually gets to do its thing. The only way I see to work around this without changing the source and rebuilding (ugggh) is to not have /usr/spool/mail from the server pointed to by the local /usr/spool/mail, but that's ugly, and it really should work as I've described. Comments? -- beak is beak is not
nsb@THUMPER.BELLCORE.COM (Nathaniel Borenstein) (09/10/90)
Well, I can see arguments for having it either way. But certainly your desire to not have it read from /usr/spool/mail/xxx is reasonable in the circumstances, and there should at least be a way to do it. Is there anyone out there who would be unhappy if the existence of a configured mail collection command meant that the automatic checking of /usr/spool/mail/xxx was turned off? BTW, the reason there's a personal mail collection command is that sometimes it makes sense for individuals to be able to customize this behavior. AMS_MailCollectionCommand, set in AndrewSetup, affects the whole site, while PersonalMailCollectionCommand is user-specific. The latter turns out to have been useful for some people at Bellcore who receive mail on one machine and read it on a workstation, because this is not the "universal" situation at Bellcore. (There is NO universal situation at Bellcore; we have the most fragmented system I've ever imagined...) Anyway, at the very least there should be an option to NOT check /usr/spool/mail/XXX to improve your situation, and possibly it should never be checked when one of the two mail collection commands is set. I have no strong opinion on that one, but other people might. -- Nathaniel
Craig_Everhart@TRANSARC.COM (09/11/90)
One way you can turn off AMS"s processing of /usr/spool/mail/datri without recompiling is to redefine AMS_MailBoxPrefix in your ...../AndrewSetup to be something other than /usr/spool/mail. If you define it as, say, /tmp/dogs, then AMS's efforts to incorporate the messages in /tmp/dogs/datri will come to nothing. (Or, for that matter, change the MAIL environment variable to be other than /usr/spool/mail/datri--but if that env vbl is used elsewhere and you set it elsewhere, you might screw up some other program like xbiff.) You can do a lot with AndrewSetup. But yes, I'd agree that a personal (or site-wide) mail-collection command should probably override the /usr/spool/mail conversion thingy. In addition, if the current stuff that reads from /usr/spool/mail/userid can be improved, wouldn't that be a good idea too? Craig