Sorry for the duplicate message but I have some more information to share:

I instrumented some fake sendmail binaries/scripts to I can insert myself
in between and execute a ktrace. Note that below the "/usr/sbin/send-mail"
is just a symlink to smtpctl to trigger "sendmail compat mode" of smtpd.

Unfortunately in both cases below this is the entire ktrace. I've already
eliminated mailwrapper(8) as the source of any issues as it successfully
calls smtpctl and that's where the hang is happening. Below two examples
show a call to smtpctl with default Alpine args and a forced "-t" arg:

14906 ktrace   RET   ktrace 0
14906 ktrace   CALL  execve(0x6fd7f687e0ff,0x6fd7f687df88,0x6fd7f687dfb0)
14906 ktrace   NAMI  "/usr/sbin/send-mail"
14906 ktrace   ARGS  
        [0] = "/usr/sbin/send-mail"
        [1] = "-bs"
        [2] = "-odb"
        [3] = "-oem"

18856 ktrace   RET   ktrace 0
18856 ktrace   CALL  execve(0x77fb458a4f7f,0x77fb458a4e18,0x77fb458a4e30)
18856 ktrace   NAMI  "/usr/sbin/send-mail"
18856 ktrace   ARGS  
        [0] = "/usr/sbin/send-mail"
        [1] = "-t"

Regards
Lloyd

On Tuesday, April 29th, 2025, Lucas Gabriel Vuotto wrote:

> Hey Lloyd,
> 
> On Tue, Apr 29, 2025 at 02:00:17AM +0000, Lloyd wrote:
> 
> > There is a bug in Alpine whereby out of the box it is unable to send email 
> > on
> > an OpenBSD box, even locally. By default, sending a message in unconfigured
> > Alpine will fork out to sendmail(8) which hangs for some unknown reason and
> > the sendmail wrapper process needs to be killed. Receiving mail works fine.
> > 
> > Running /usr/sbin/sendmail -t < ~/dead.letter against the abandoned message
> > works fine, so the interface between Alpine and the sendmail wrapper is
> > broken.
> > 
> > I ran a ktrace but couldn't find anything substantiative. Rather than debug
> > this further, there is a much simpler patch to get Alpine working in the
> > default install. The below change sets the value of smtp-server to localhost
> > in the file which gets copied to /etc/pine.conf on installation. With this
> > variable set, Alpine connects to the local smtpd over TCP rather than using
> > the sendmail(8) utility, if the user has no smtp server defined.
> > 
> > /etc/pine.conf is overridden by the user's ~/.pinerc so this should be a
> > non-destructive change that will not impact anything but an unconfigured
> > installation which falls back to using sendmail(8), which does not work.
> > 
> > If it did work, then I believe --with-smtp-msa-flags=-t should be set in
> > the Makefile as well since the hard-coded defaults pass bogus flags to
> > sendmail(8). This didn't work either so it really doesn't matter, I believe
> > the issue lies somewhere in the threading mechanism and how it forks out
> > to sendmail. It's possible a prior security-related change broke something.
> > 
> > This issue dates back to at least OpenBSD 6.8:
> > 
> > https://marc.info/?l=openbsd-misc&m=161141614219034&w=2
> 
> 
> I'm not an alpine user, but got curious about this issue. Would you mind
> sharing the bits of `ktrace -di alpine` related to exec functions with
> me? It's important you share only those bits, as ktrace output might
> include data like passwords.
> 
> For the record, I verified that adding --with-smtp-msa-flags=-t does
> indeed set it in the code, so that should be working.
> 
> Lucas

Reply via email to