Cannot load Perl modules due to effective UID/GID in Mailman plugin

  • I tried sending an email for first time after Mailman Plugin update this morning for one of my mail lists and received the following error:

    1. SMTP Error (550): Failed to add recipient "" (5.1.1 <>: Recipient address rejected: User unknown in virtual mailbox table).

    I have tried with Roundcube 1.25 and Thunderbird ...
    I can login to mailman admin and user pages. I can bounce replies from admin for passwords and help, but not to lists that have been setup. Any thoughts? I appreciate any input ...

    EDIT ADD: I am digging a little further and went into control panel to edit lists and I now have an unexpected error, and within database under mailman_status is:

    1. /var/www/imscp/gui/plugins/InstantSSH/backend/Capture/ Permission denied at /usr/share/perl/5.20/ line 53.

    I will update as necessary ..

    System Details
    Debian GNU/Linux 8.8 (jessie)
    PHP Ver: 5.6.30 (Default)
    MYSQL Ver: 5.7.17
    Vsftpd Ver: 3.0.2
    i-MSCP 1.4.6 | Build: 20170616| Codename: ZImmer

    Plugins Installed and Active
    AdminerSQL - Ver. 1.0.1
    ClamAV - Ver. 1.2.1
    CronJobs - Ver. 1.4.1
    DomainAutoApproval - Ver. 1.1.2
    InstantSSH - Ver. 5.0.1
    LetsEncrypt - Ver. 3.2.1
    Mailgraph - Ver. 1.1.1
    Mailman - Ver. 2.0.0
    Monitorix - Ver. 1.2.2
    OpenDKIM - Ver. 1.1.3
    PanelRedirect - Ver. 1.2.0
    PhpSwitcher - Ver. 3.0.6
    PolicydSPF - Ver. 1.1.0
    PolicydWeight - Ver. 1.1.0
    Postgrey - Ver. 1.1.1
    Postscreen - Ver. 1.1.2
    RoundcubePlugins - Ver. 2.0.1
    ServerDefaultPage - Ver. 1.3.0
    SpamAssassin - Ver. 1.1.1

    “Life is all an Elaborate Hoax”

    Edited once, last by texxasrulez: Additional errors from testing ().

  • I tried to create a new list with a never before used name and got the error:

    1. Plugin::Mailman::_execMailmanCmd: Can't locate Capture/ /var/www/imscp/gui/plugins/InstantSSH/backend/Capture/ Permission denied at /usr/share/perl/5.20/ line 53.

    Ofcourse, there is not a capture directory under /var/www/imscp/gui/plugins/InstantSSH/backend.

    I am taking server offline today for scheduled cleaning so I will be back later for more info ... Thank you and have a nice weekend

    “Life is all an Elaborate Hoax”

  • @texxasrulez

    Problem confirmed. This is due to the fact that in the Mailman plugin, I'm temporarely changing the effective UID/GID of the process to ensure that files are created with expected ownership and permissions. However, by doing this, I make the process temporarely unable to read some directories. I'll fix the problem by passing required additional groups to SETGROUPS(2) and a new version will be released.

    I've not seen that bug before because during my tests, there was no other plugin adding paths in Perl @INC which is the array containing paths that Perl look for when loading modules. Also, there was no module was lazy-loaded. This is a critical issue.


  • It is all good. I know what you mean when it comes to testing ... Gotta look at it from way too many angles .... Thanx as always ....

    “Life is all an Elaborate Hoax”

  • @texxasrulez

    To resume the situation with two commands:

    Here, I don't set additional EGID and so, mailman list user cannot access some directories that are not world-readable

    1. root@jessie:~# LANG=C perl require.plReal gid: 0 0Effective gid: 38 0Real uid: 0Effective uid: 38Can't locate iMSCP/ /var/www/imscp/engine/PerlLib/iMSCP/ Permission denied at /usr/share/perl/5.20/ line 53.

    Here, I set required additional EGID and so, mailman list user can access the directories

    • 38: list group
    • 1000: imscp group
    • 1001: vu2000 group

    I hope you understand the issue.

    See also:


  • @texxasrulez

    Should be fixed in new version. See Mailman plugin v2.0.1 RELEASED
    Thank you for your report.
    Thread closed.