I herewith report that the portable branch as distributed by Void Linux
works on Void Linux.  (I could not get the 6.6.1p1 that I myself
downloaded to work, though it did compile and install.  I have not
looked at what, if any, difference(s) there may be between the two.)  My
use of Opensmtpd is simply for myself on my home machine, with a couple
different email accounts on a smarthost.

On Tue, Nov 19, 2019 at 08:07:10AM +0000, gil...@poolp.org wrote:
> Hello,
> OpenSMTPD portable was first released many many years ago thanks to the work 
> of Charles Longeau.
> IIRC this was his first OpenBSD portable project and he bootstrapped it from 
> OpenSSH.
> It served us well and opened us to the Linux world but it also came with its 
> share of errors inherent to a new project.
> Unless some of you are interested, I won't enter the details, but the basic 
> idea is that the portable version has a library which contains the bits that 
> were detected as missing/broken on a target system and, because of it's done, 
> it may contain a bit more than we think it does. In most cases, this isn't a 
> problem because if OpenSMTPD uses the portable version of strwhatever() 
> instead of libc's, it isn't really a big deal.
> There are two cases however that bit us:
> The first one was the "OpenSMTPD portable on OpenBSD" case. For years, I kept 
> repeating that running OpenSMTPD portable on OpenBSD was not supported and 
> that this would lead to unexpected issues. This became a reality at some 
> point when building portable on OpenBSD resulted in an executable that would 
> crash at startup despite being fundamentally the same code as the master 
> branch which would work just fine. It turned out that this was because, 
> despite being on OpenBSD, some bits from the compat layer were still built 
> and these bits not being the system ones, they didn't comply with our 
> pledge().
> The second one came shortly before 6.6.0p1 as people started reporting 
> crashes on some systems and the issue was traced back to an incorrect 
> inclusion of arc4random() related functions. If a target system was using 
> LibreSSL, which brings arc4random(), we would somehow end up using the 
> LibreSSL one but use our own entropy stirring function and blow up in pieces.
> There are other downsides to the way the portable layer works and while we 
> had work-arounds so people wouldn't notice on systems we were actively 
> supporting (Linux, FreeBSD, ...), it is less than perfect for developers 
> willing to bring new targets. Freddy Dissaux who worked on bringing OpenSMTPD 
> to Solaris hit several of these downsides.
> Anyways, I have started reworking the layer so that it conditionally builds 
> what it needs.
> The compat layer on OpenBSD is now empty as it should and the resulting 
> executable runs reliably as it should too.
> There's still work required because code set aside, we also have headers 
> issues (for which we have a workaround).
> I REALLY need feedback from portable users running the development branch.
> Ihor Antonov has setup a CI that lets us spot failures to build on Linux 
> glibc/musl, however:
> - we don't have CI for FreeBSD, NetBSD, DFlyBSD, OSX, Solaris
> - CI won't spot either one of the two issues I solved above as they occur at 
> startup / runtime
> You can help us make the portable branch really good in a very short time and 
> on the long term by testing and reporting regularly that the portable branch 
> still works for you.
> Gilles


Reply via email to