I posted before about using the Airmail through Wine on Linux to access the Winlink system. It’s fine, it works, but it is a lot of overhead. Recently, in a response to a question, Dana, KA1WPM posted to one of the Winlink email lists that I’m on about the existence of paclink-unix. Paclink-unix was started by Nick Castellano, N2QZ.

Now I had seen this mentioned before, but for whatever reason I never took the time to look at it. This time I took a closer look.

After downloading the source and having a quick browse, a few small modifications had to be made.

In mime2wl.c I changed Nick’s call-sign to my own. The same had to be done in mail.wl2k.c

in wl2k.c I changed

asprintf(&command, "%s -ba %s", SENDMAIL, emailaddress)


asprintf(&command, "%s -bm %s", SENDMAIL, emailaddress)

I’m not sure what -ba means to the original sendmail, but -bm for postfix, which I’m using, seemed to be what I was looking for, after consulting the manpage.

Next the configuration. After (very) briefly consulting the postfix docs. I came up with the following:

transport_maps = hash:/etc/postfix/transport


wl2k unix – n n – – pipe
flags=RXhu user=j0n argv=/usr/local/libexec/mail.wl2k

I mostly copied the maildrop line already in the configuration file. removing the ‘D’ in the flags and adding an ‘X’. I’ve not yet tested whether I need the ‘D’ or not.

X indicates ” Indicate that the external command performs final delivery. This flag affects the status reported in “success” DSN (delivery status notification) messages, and changes it from “relayed” into “delivered”.”

... wl2k:localhost

So anything destined now gets sent through the local transport.

That’s pretty much it for the moment.

If I need to send to any other domains through winlink I could add the following “catch-all” to the transports file.

* wl2k:localhost

And everything would go through it.

Testing it then I sent myself an email at, and tried to collect it using the supplied tools.

j0n@ns1:~/src/paclink-unix-0.3$ sudo wl2kax25 EI7IG "EI8IG-10 v EI2WRC-4" 1200 60 ei7ig@localhost



wl2kax25: sid [WL2K-$] inboundsidcodes -B2FIHM$


wl2kax25: proposal code C type E mid 6L9CAL8YBRST usize 274 csize 236 next (nil) path (null) ubuf (nil) cbuf (nil)
wl2kax25: sentcksum=79 proposalcksum=79
wl2kax25: 1 proposal received
wl2kax25: title: Testing Postfix
wl2kax25: offset: 0
wl2kax25: STX
wl2kax25: len 236
wl2kax25: EOT
wl2kax25: extracting…
wl2kax25: calling sendmail for delivery
wl2kax25: delivery completed
wl2kax25: Finished!


wl2kax25 is like fetchmail. It connects out over a linux ax25 port (i.e. Radio) to a winlink node and retrieves it to be delivered to an email account of your choosing. In the above example, the winlink node is approximately 35km away, but not accessible directly. Consequently I used the EI2WRC-4 digital repeater (digipeater) to relay my packets.

For a ‘pre-alpha’ piece of software, it is working nicely for me, and it is good to have a Linux “Native” winlink client. Many thanks to Nick and Dana for their efforts.

Leave a Reply

Your email address will not be published. Required fields are marked *