Re: mj_create_list fails with postfix

Daniel Liston <[email protected]> Tue, 07 Oct 2008 23:36:24 -0500
Newsgroups gmane.mail.majordomo.general
Message-ID <[email protected]>
I have never used majorcool, but I did experiment with it late in the 20th
century.  :)

I think the problem is/was that majorcool is older than most replacements
for sendmail so does not have logic to support them.  Even sendmail itself
has added so many security enhancements, that sendmail -bv does not return
the same results for different users.

"sendmail -bv $list" if executed from the command line produces different
results based on the uid executing the command and whether or not the value
of $list is a local or fully qualified email address.  On Fedora 8 as root;

> 19:05:30 [root mqueue]# sendmail -bv dliston
> dliston... deliverable: mailer local, user dliston
> 19:05:40 [root mqueue]# sendmail -bv [email protected]
> [email protected]... deliverable: mailer relay, host mail.sonny.com, user [email protected]

The same commands as dliston (a TrustedUser), and member of the mail group;

> 19:09:21 [dliston ~]$ sendmail -bv dliston
> Notice: -bv may give misleading output for non-privileged user
> can not chdir(/var/spool/mqueue/): Permission denied
> Program mode requires special privileges, e.g., root or TrustedUser.
> 19:09:32 [dliston ~]$ sendmail -bv [email protected]
> Notice: -bv may give misleading output for non-privileged user
> can not chdir(/var/spool/mqueue/): Permission denied
> Program mode requires special privileges, e.g., root or TrustedUser.

Based on the above, I have a feeling that even if I install majorcool on
a system that uses sendmail, the mj_create_list routine might need to be
tweaked.

On my system, I changed the 700 permission to 750 on /var/spool/mqueue
and added myself and majordomo to the mail and smmsp groups to finally
get reasonable output from the sendmail -bv <address> command.  You might
have to do something similar for postfix.  The object of the sendmail -bv
is to verify an address exists.  In the case of creating a list, this
logic is reversed to make sure you are NOT attempting to create an address
that already exists before actually creating it.

If sendmail -bv $list results in $list... deliverable, the address already
exists and you should get a squawk.  If the result is $list... User unknown,
the routine should continue and create the new list.

That is about as far as I can go to help with postfix or majorcool.

Sorry,
Dan Liston


Duncan Cunningham wrote:
> $sendmail_command is defined as /usr/sbin/sendmail.  /usr/sbin/sendmail 
> is a symlink to /usr/sbin/mailwrapper.  The mailwrapper allows programs 
> to use postfix as if it were sendmail.  mailer and bounce_mailer 
> variables are defined as :
> 
> $mailer = "$sendmail_command -oi -oee -f\$sender";
> $bounce_mailer = "$sendmail_command -oi -oee -f\$sender -t";
> 
> Lastly, I am trying to use the create list function with majorcool.
> 
> Duncan Cunningham
> 
> Daniel Liston wrote:
>> Hi Duncan,
>>
>> $sendmail_command is defined in the majordomo.cf file.  Is yours 
>> pointed to
>> postfix?  Also of interest are the $mailer definition and comments.
>>
>> # $sendmail_command -- Pathname to the sendmail program
>> #                      usually /usr/lib/sendmail, but some newer BSD 
>> systems
>> #                      seem to prefer /usr/sbin/sendmail
>> #
>> # $sendmail_command = "/usr/lib/sendmail";
>> $sendmail_command = "/usr/sbin/sendmail";
>>
>> # $mailer -- What program and args do I use to send mail to the list?
>> # $bounce_mailer -- What is used to send mail anywhere else?
>> # The variables $to, $from, $subject, and $sender can be interpolated 
>> into
>> # this command line.  Note, however, that the $to, $from, and $subject
>> # variables may be provided by the person sending mail, and much mischief
>> # can be had by playing with this variable.  It is perfectly safe to use
>> # $sender, but the others are insecure.
>> #
>> # Sendmail option -oi:  Do not take a . on a line by itself as the 
>> message
>> #                       terminator.
>> # Sendmail option -oee: Force sendmail to exit with a zero exit status if
>> #                       if it's not going to give useful information.
>> #
>> $mailer = "$sendmail_command -oi -oee -f\$sender";
>> $bounce_mailer = "$sendmail_command -oi -oee -f\$sender -t";
>>
>> # You can special case the mailer used to deliver outbound mail as 
>> follows:
>> #
>> # To use TLB and use no outgoing alias:
>> # if ($main'program_name eq 'mj_resend' && $opt_l eq 'test-list') {
>> #   $mailer = "/usr/local/majordomo/tlb /usr/local/lists/${opt_l}.tlb";
>> # }
>> #
>> # To use a different Sendmail queue for this list's mail:
>> # if ($main'program_name eq 'mj_resend' && $opt_l eq 'test-list') {
>> #   $mailer = "$sendmail_command -oQ /var/spool/listq -f\$sender";
>> # }
>>
>> Lastly, are you using the create list function of majorcool with 
>> majorcool,
>> or are you trying to use it as in independent application?  If the 
>> latter,
>> you might be interested in trying out a script I wrote a few years 
>> back at;
>>
>>    ftp://ftp.ccsf.org/majordomo-contrib/listadd5.pl.gz
>>
>> Dan Liston
>>
>> Duncan Cunningham wrote:
>>> Hi,
>>>
>>> I am trying to get the mj_create_list script from majorcool working 
>>> with majordomo.  When I try to create a list through majorcool using 
>>> the script, it errors out saying: Checking for existing aliases... 
>>> address '$list' already exists.  It doesn't matter what I call the 
>>> list, it will fail.  I did some poking around in the script and the 
>>> following line causes the failure.
>>>
>>> &squawk("address '$list' already exists")
>>>                unless system("$sendmail_command -bv $list >/dev/null");
>>>
>>> We are using postfix for mailing and from what I can tell, postfix 
>>> will return 0 whether $list exists or not, causing the squawk command 
>>> to always execute.  Anyone have any ideas of how I can get this 
>>> working with postfix?
>>>
>>> Thanks,
>>> Duncan Cunningham
>>>
> 
>