Proxmox Mail Gateway – Wide character in syswrite

To fight spam we are using Proxmox Mail Gateway 7.1-8.
Today (after update?) we have found full queue of undelevered mails and strange errors in the maillog:

Nov  8 08:26:53 as postfix/lmtp[204578]: A56F8A2BB5: to=<martin@example.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=1.2, delays=0.01/0/0.05/1.2, dsn=4.4.0, status=deferred (host 127.0.0.1[127.0.0.1] said: 451 4.4.0 detected undelivered mail to <martin@example.com> (in reply to end of DATA command))

Nov  8 20:09:47 as pmg-smtp-filter[1196]: Wide character in syswrite at /usr/share/perl/5.32/Net/Cmd.pm line 210.

Nov  8 08:26:53 as pmg-smtp-filter[204435]: C0B4B636A04BCB4317: reinject mail to <martin@example.com> (rule: default-accept) failed

After some searching and editing files I came at the line 210 in Cmd.pm and there was:

my $w = syswrite($cmd, $line, $len, $offset);

It occured to me that the $line must be in some unaccepted format so this syswrite fails.

I’ve installed Unicode::UTF8 with: apt install libunicode-utf8-perl

Edited Cmd.pm and added above line 210:


  use utf8;
  use Unicode::UTF8 qw( encode_utf8 );

  while ($len) {
    my $wout;
    my $nfound = select(undef, $wout = $win, undef, $pending);
    if ((defined $nfound and $nfound > 0) or -f $cmd)    # -f for testing on win32
    {
        $line = encode_utf8($line);
      my $w = syswrite($cmd, $line, $len, $offset);
      if (! defined($w) ) {

Then restarted pmg-smtp-filter and flushed the postfix queue.

# systemctl restart pmg-smtp-filter.service
# postqueue -f

The workaround works for now. Relieved!