Guide updated on 29th of February 2016

Install Ezmlm-idx


EZmlm-idx is a nice mailing list add-on to Qmail. When we install Qmailadmin later on, you'll see that EZmlm-idx integrates seamlessly into Qmailadmin to provide a very user friendly mailing list management interface. As an added bonus, Vpopmail (which we will install as well) will let you control what users can and cannot use mailing lists! Can't beat that! Its home page is here: http://www.ezmlm.org/

cd /downloads/
tar zxvfp ezmlm-idx-7.2.2.tar.gz

Edit the files /downloads/ezmlm-idx-7.2.2/conf-ld and replace the first line by :

cc -g -export-dynamic -B /usr/lib/mysql/

cd /downloads/ezmlm-idx-7.2.2
ln -s /downloads/ezmlm-idx-7.2.2/lang/en_US /downloads/ezmlm-idx-7.2.2/lang/default
make clean

make; make man

./ezmlm-test

To use a language other than US English as the default for list texts, edit the file /downloads/ezmlm-idx-7.2.2/conf-lang and change the first line to one of the ISO language designations found in the /downloads/ezmlm-idx-7.2.2/lang directory.

You should have an answer like this :

ezmlm-make: OK
Using subdb plugin: std
ezmlm-reject: OK
ezmlm-[un|is]sub[n]: OK
ezmlm-checksub: OK
ezmlm-send: OK
ezmlm-tstdig: OK
ezmlm-weed: OK
ezmlmrc contents: OK
ezmlm-clean: OK
ezmlm-store: OK
ezmlm-return: OK
ezmlm-warn (1/2): OK
ezmlm-manage (1/2): OK
ezmlm-request: OK
ezmlm-split: OK
ezmlm-gate: OK
ezmlm-idx: OK
ezmlm-get (index): OK
ezmlm-get (get): OK
ezmlm-get (thread): OK
ezmlm-get (digest): OK
ezmlm-manage (2/2): OK
ezmlm-moderate: OK
ezmlm-warn (2/2): OK
ezmlm-archive: OK
ezmlm-dispatch: OK
dispatch editor: OK
decode sender: OK
Verifying message header and body contents...
flags and substs: OK
messages: OK
subscribe probe: OK
unsubscribe probe: OK
subscribe: OK
unsubscribe: OK
moderated subscribe: OK
moderated unsub: OK
subscribe by mod: OK
unsubscribe by mod: OK
copylines: OK
ezmlm-send: OK
Cleaning up...

Create the needed Database.

The used MySQL_root_password should be the password chosen on pre-step 3. It's should not be the same as the password for ezmlmuser (EZMLM_PASSWORD).

It's not a typo, the MySQL_root_password should really be just aside the -p

mysql -pMySQL_root_password

CREATE DATABASE ezmlm;
GRANT ALL PRIVILEGES ON ezmlm.* TO ezmlmuser@localhost IDENTIFIED BY 'EZMLM_PASSWORD';
FLUSH PRIVILEGES;
quit;

Test the account you have just created

mysql -uezmlmuser -pEZMLM_PASSWORD

You should have such response

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1073
Server version: 5.5.47-0+deb8u1 (Debian)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>exit;

Install and test the mysql support

cd /downloads/ezmlm-idx-7.2.2
make mysql
./ezmlm-test -s mysql -u ezmlmuser -p EZMLM_PASSWORD -h localhost

You should have an answer like this :

ezmlm-make: OK
Using subdb plugin: mysql
ezmlm-reject: err with text after boundary: 0.30 bug fixed in 0.322
ezmlm-reject: OK
ezmlm-[un|is]sub[n]: OK
ezmlm-checksub: OK
ezmlm non-SQL: OK
ezmlm SQL: OK
...
Cleaning up...

Finalize the install

make install
cp /downloads/ezmlm-idx-7.2.2/ezmlm-cgi /usr/lib/cgi-bin/
chmod 4555 /usr/lib/cgi-bin/ezmlm-cgi

Ezmlm-0.53 is a qmail-based mailing list manager written by Dan J. Bernstein (qmail's author) ; ezmlm-idx originated as an add-on to it. It now exists as a complete package on its own, but can still be considered essentially as an extension to ezmlm.

You can find the complete manual on http://untroubled.org/ezmlm/manual/

Install Autorespond


Users comments
Bob - 23/08/2017 09:03

When using a password with special characters, the ezmlm-test command cannot be run. MySQL works well (you can do -p'p@s$w0rd~!`' - but ezmlm-test doesn't facilitate this.

To solve, change the password to something simpler, in MySQL

mysql -u root -pMySQL_root_password

SET PASSWORD FOR 'ezmlmuser@localhost'=PASSWORD('new password')

Flush privileges;

quit;

Loeke - 12/04/2017 14:35

Problem solved!

Problem was caused by the use of a $ sign in the password.

Loeke - 10/04/2017 10:47

Hi Thibs,

Since my Ubuntu server is updated to 16.04.2 LTS and MYSQL is updated to 5.7.17 I see an issue in the "Install and test the mysql support" part of this description. The test responds with:

shell:/downloads/ezmlm-idx-7.2.2$ sudo ./ezmlm-test -s mysql -u ezmlmuser -p ******** -h localhost
getconfopt library:   OK
ezmlm-make:           OK
Using subdb plugin:   mysql
ezmlm-make: fatal: creating subscriber tables failed: Access denied for user 'ezmlmuser'@'localhost' (using password: YES)
ezmlm-make failed to add subdb config info

This issue may be related to a change in MySQL: on the command line it does not accept the password anymore. It needs to be entered after the password prompt. (additional security I guess :-) )

Section 4.1 of RefMan MySQL 5.7 gives as the only option:

shell> mysql -h host -u user -p
Enter password: ********

So that needs also an update in the section "Test the account you have just created".

Any idea how to solve this issue? Thanks!

 

Thibs - 23/12/2016 14:43

Hello Geek77

 

It's probably due to the fact one of your subscriber has been infected. This infection causes random messages to be sent to random contact (randomly found in the mails in its mailbox)

Geek77 - 10/12/2016 11:29

Hi thibs

 

my mailing list subscriber get emails like this "technical@mydomain.com; on behalf of; Sam [sam@mydomain.com]". Could you please help me to get rigid of "on behalf of" .... message from mailing list header.

 

thanks

Ilie tache - 14/02/2016 16:02

Hi,

In order for ezmlm-idx-7.2.2 to function correctly you need to add/correct in  "/downloads/ezmlm-idx-7.2.2/conf-ld" the following: "cc -g -export-dynamic -B /usr/lib/mysql/".

This is needed in order for ezmlm-make to work with "/usr/local/lib/ezmlm/sub-std.so".

 

 

 

 

 

My - 11/09/2015 11:09

My problem come to language.

Even after edit file conf-lang, this not work

 

In en_US, this work fine

My - 11/09/2015 10:21

On debian Wheezy

 

i have this issue :

 

sudo make mysql
./libcompile messages.c
In file included from messages.c:22:0:
messages-txt.c:2:1: error: expected ‘,’ or ‘;’ before ‘TXT_ONLY_SUBSCRIBERS’
messages-txt.c:2:1: error: stray ‘#’ in program
messages-txt.c:2:1: error: stray ‘#’ in program
messages-txt.c:2:1: error: stray ‘@’ in program
messages-txt.c:2:1: error: stray ‘#’ in program
messages-txt.c:2:1: error: stray ‘#’ in program
messages-txt.c:2:1: error: stray ‘351’ in program
messages-txt.c:2:1: error: stray ‘352’ in program
messages-txt.c:2:1: error: stray ‘351’ in program
messages-txt.c:2:1: error: stray ‘#’ in program
messages-txt.c:2:1: error: stray ‘#’ in program
messages-txt.c:2:1: error: stray ‘@’ in program
messages-txt.c:2:1: error: stray ‘#’ in program
messages-txt.c:2:1: error: stray ‘#’ in program
In file included from messages.c:22:0:
messages-txt.c:3:26: warning: character constant too long for its type [enabled by default]
messages-txt.c:3:1: error: stray ‘351’ in program
messages-txt.c:3:1: error: stray ‘351’ in program
messages-txt.c:3:1: error: stray ‘351’ in program
messages-txt.c:3:1: error: stray ‘#’ in program
messages-txt.c:3:1: error: stray ‘#’ in program
messages-txt.c:3:1: error: stray ‘@’ in program
messages-txt.c:3:1: error: stray ‘#’ in program
messages-txt.c:3:1: error: stray ‘#’ in program
make: *** [messages.lo] Error 1

Thibs - 19/02/2015 16:32

Kristian :

Is the file /usr/local/bin/ezmlm/ezmlm-send existing ?

If yes, did you make change to the permission of the /tmp folder ? 

Kristian - 11/02/2015 13:55

Hello Thibs!

I was hoping you could help me out, when i try to install ezmlm everything looks okay until i run the ./ezmlm-test

subscribe by mod: OK
unsubscribe by mod: OK
copylines: OK
ezmlm-send:  failed to produce post

Any idea? I have tried to reinstall and both 7.1.1 and 7.2.2 :(

Lars - 13/09/2014 15:50

Okay Percona is also working for me:

You can replace the bindings and check (find . -type f | xargs grep -si "lmysqlclient") before you configure a package source if there is any mysqlclient params and replace these like this:

#> find . -type f -exec sed -i 's/ -lmysqlclient / -lperconaserverclient /g' {} \;

ps: of course you need the percona dev package.

Lars - 13/09/2014 13:54

What a pity! Seems not to work with percona instead of mysql? Does anybody know how t fix this?

# ./ezmlm-test
getconfopt library:   OK
ezmlm-make:           OK
Using subdb plugin:   std
ezmlm-reject:         OK
ezmlm-[un|is]sub[n]:  OK
ezmlm-checksub:       OK
ezmlm-send:           OK
ezmlm-tstdig:         OK
ezmlm-weed:           OK
ezmlmrc contents:     OK
ezmlm-clean:          OK
ezmlm-store:          OK
ezmlm-return:         OK
ezmlm-warn (1/2):     OK
ezmlm-manage (1/2):   OK
ezmlm-request:        OK
ezmlm-split:          OK
ezmlm-gate:           OK
ezmlm-idx:            OK
ezmlm-get (index):    OK
ezmlm-get (get):      OK
ezmlm-get (thread):   OK
ezmlm-get (digest):   OK
ezmlm-manage (2/2):   OK
ezmlm-moderate:       OK
ezmlm-warn (2/2):     OK
ezmlm-archive:        OK
ezmlm-dispatch:       OK
dispatch editor:      OK
decode sender:        OK
Verifying message header and body contents...
flags:                OK
substitutions:        OK
messages:             OK
subscribe nop:        OK
unsubscribe nop:      OK
subscribe probe:      OK
unsubscribe probe:    OK
subscribe:            OK
unsubscribe:          OK
moderated subscribe:  OK
moderated unsub:      OK
subscribe by mod:     OK
unsubscribe by mod:   OK
copylines:            OK
ezmlm-send:           OK
ezmlm-send (from):    OK
ezmlm-send trailer:   OK
omitbottom (-manage): OK
omitbottom (-get):    OK
Cleaning up...

[...]

#> make mysql
./libcompile sub-mysql.c
./libcompile sub_sql.c
( ( ./compile trylib.c && ./load trylib -lnsl ) >/dev/null 2>&1 && echo -lnsl || exit 0 ) >nsl.lib
rm -f trylib.o trylib
( ( ./compile trylib.c && ./load trylib -lm ) >/dev/null 2>&1 && echo -lm || exit 0 ) >m.lib
rm -f trylib.o trylib
./makeso sub-mysql.so sub-mysql.lo sub_sql.lo -lezmlm -lmysqlclient  `cat nsl.lib` `cat m.lib`
/usr/bin/ld: cannot find -lmysqlclient
collect2: error: ld returned 1 exit status
make: *** [sub-mysql.so] Error 1

Paolo - 17/02/2014 19:41

On Debian 7 :

cp /usr/include/mysql/mysql.h /downloads/ezmlm-idx-7.1.1

make mysql

Thibs - 09/07/2012 10:17

Hello Bert,

I think it's because you forgot ton install the package "libmysqlclient-dev" as described on package-install.php

Bert - 08/07/2012 13:36

Hello,

When I try to install and test the mysql support, I get:

make mysql
( cat warn-auto.sh; \
    echo CC=\'`head -n 1 conf-cc`\'; \
    echo CCLO=\'`head -n 1 conf-cclo`\'; \
    echo LD=\'`head -n 1 conf-ld`\'; \
    echo LDSO=\'`head -n 1 conf-ldso`\'; \
    ) > auto-ccld.sh
cat auto-ccld.sh make-makeso.sh > make-makeso
chmod 755 make-makeso
cat auto-ccld.sh find-systype.sh > find-systype
chmod 755 find-systype
./find-systype > systype
( cat warn-auto.sh; ./make-makeso "`cat systype`" ) > makeso
chmod 755 makeso
cat auto-ccld.sh make-libcompile.sh > make-libcompile
chmod 755 make-libcompile
( cat warn-auto.sh; ./make-libcompile "`cat systype`" ) > libcompile
chmod 755 libcompile
cat auto-ccld.sh make-compile.sh > make-compile
chmod 755 make-compile
( cat warn-auto.sh; ./make-compile "`cat systype`" ) > compile
chmod 755 compile
./choose c tryattribute hasattribute.h1 hasattribute.h2 > hasattribute.h
cat auto-ccld.sh make-load.sh > make-load
chmod 755 make-load
( cat warn-auto.sh; ./make-load "`cat systype`" ) > load
chmod 755 load
( ( ./compile tryulong32.c && ./load tryulong32 && ./tryulong32 ) >/dev/null 2>&1 \
    && cat uint32.h2 || cat uint32.h1 ) > uint32.h
rm -f tryulong32.o tryulong32
./libcompile sub-mysql.c
sub-mysql.c:30:19: error: mysql.h: No such file or directory
sub-mysql.c:31:26: error: mysqld_error.h: No such file or directory
sub-mysql.c: In function '_closesub':
sub-mysql.c:64: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:64: error: (Each undeclared identifier is reported only once
sub-mysql.c:64: error: for each function it appears in.)
sub-mysql.c:64: error: expected expression before ')' token
sub-mysql.c:65: error: expected expression before ')' token
sub-mysql.c: In function '_opensub':
sub-mysql.c:72: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:72: error: expected expression before ')' token
sub-mysql.c:73: error: expected expression before ')' token
sub-mysql.c:75: error: expected expression before ')' token
sub-mysql.c:77: error: expected expression before ')' token
sub-mysql.c: In function 'safe_query':
sub-mysql.c:84: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:84: error: expected expression before ')' token
sub-mysql.c:85: error: expected expression before ')' token
sub-mysql.c: At top level:
sub-mysql.c:88: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
sub-mysql.c: In function '_checktag':
sub-mysql.c:106: error: 'MYSQL_RES' undeclared (first use in this function)
sub-mysql.c:106: error: 'result' undeclared (first use in this function)
sub-mysql.c:107: error: 'MYSQL_ROW' undeclared (first use in this function)
sub-mysql.c:107: error: expected ';' before 'row'
sub-mysql.c:121: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:121: error: expected expression before ')' token
sub-mysql.c:122: error: expected expression before ')' token
sub-mysql.c:123: error: expected expression before ')' token
sub-mysql.c:124: error: expected expression before ')' token
sub-mysql.c:125: error: 'row' undeclared (first use in this function)
sub-mysql.c:129: error: expected expression before ')' token
sub-mysql.c:143: error: expected expression before ')' token
sub-mysql.c:144: error: expected expression before ')' token
sub-mysql.c:145: error: expected expression before ')' token
sub-mysql.c:146: error: expected expression before ')' token
sub-mysql.c:149: error: expected expression before ')' token
sub-mysql.c: In function '_issub':
sub-mysql.c:164: error: 'MYSQL_RES' undeclared (first use in this function)
sub-mysql.c:164: error: 'result' undeclared (first use in this function)
sub-mysql.c:165: error: 'MYSQL_ROW' undeclared (first use in this function)
sub-mysql.c:165: error: expected ';' before 'row'
sub-mysql.c:191: error: 'row' undeclared (first use in this function)
sub-mysql.c:197: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:197: error: expected expression before ')' token
sub-mysql.c:201: error: expected expression before ')' token
sub-mysql.c: In function '_logmsg':
sub-mysql.c:239: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:239: error: expected expression before ')' token
sub-mysql.c:240: error: expected expression before ')' token
sub-mysql.c:240: error: 'ER_DUP_ENTRY' undeclared (first use in this function)
sub-mysql.c:241: error: expected expression before ')' token
sub-mysql.c: In function '_putsubs':
sub-mysql.c:256: error: 'MYSQL_RES' undeclared (first use in this function)
sub-mysql.c:256: error: 'result' undeclared (first use in this function)
sub-mysql.c:257: error: 'MYSQL_ROW' undeclared (first use in this function)
sub-mysql.c:257: error: expected ';' before 'row'
sub-mysql.c:274: error: 'row' undeclared (first use in this function)
sub-mysql.c:277: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:277: error: expected expression before ')' token
sub-mysql.c:282: error: expected expression before ')' token
sub-mysql.c: In function '_searchlog':
sub-mysql.c:295: error: 'MYSQL_RES' undeclared (first use in this function)
sub-mysql.c:295: error: 'result' undeclared (first use in this function)
sub-mysql.c:296: error: 'MYSQL_ROW' undeclared (first use in this function)
sub-mysql.c:296: error: expected ';' before 'row'
sub-mysql.c:320: error: 'row' undeclared (first use in this function)
sub-mysql.c:322: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:322: error: expected expression before ')' token
sub-mysql.c:326: error: expected expression before ')' token
sub-mysql.c: In function '_subscribe':
sub-mysql.c:352: error: 'MYSQL_RES' undeclared (first use in this function)
sub-mysql.c:352: error: 'result' undeclared (first use in this function)
sub-mysql.c:353: error: 'MYSQL_ROW' undeclared (first use in this function)
sub-mysql.c:353: error: expected ';' before 'row'
sub-mysql.c:397: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:397: error: expected expression before ')' token
sub-mysql.c:398: error: expected expression before ')' token
sub-mysql.c:399: error: 'row' undeclared (first use in this function)
sub-mysql.c:402: error: expected expression before ')' token
sub-mysql.c:403: error: expected expression before ')' token
sub-mysql.c:407: error: expected expression before ')' token
sub-mysql.c:408: error: expected expression before ')' token
sub-mysql.c:418: error: expected expression before ')' token
sub-mysql.c:419: error: expected expression before ')' token
sub-mysql.c:434: error: expected expression before ')' token
sub-mysql.c:463: error: expected expression before ')' token
sub-mysql.c: In function '_tagmsg':
sub-mysql.c:499: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:499: error: expected expression before ')' token
sub-mysql.c:500: error: expected expression before ')' token
sub-mysql.c:500: error: 'ER_DUP_ENTRY' undeclared (first use in this function)
sub-mysql.c:501: error: expected expression before ')' token
sub-mysql.c: In function 'create_table':
sub-mysql.c:515: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:515: error: expected expression before ')' token
sub-mysql.c:516: error: expected expression before ')' token
sub-mysql.c:516: error: 'ER_TABLE_EXISTS_ERROR' undeclared (first use in this function)
sub-mysql.c:517: error: expected expression before ')' token
sub-mysql.c: In function 'remove_table':
sub-mysql.c:607: error: 'MYSQL' undeclared (first use in this function)
sub-mysql.c:607: error: expected expression before ')' token
sub-mysql.c:608: error: expected expression before ')' token
sub-mysql.c:608: error: 'ER_BAD_TABLE_ERROR' undeclared (first use in this function)
sub-mysql.c:609: error: expected expression before ')' token
make: *** [sub-mysql.lo] Error 1

 

Any idea how to fix this

Jofin - 10/05/2012 07:45

Thanks Thibs.

I just removed Ezmlm-idx and re installed. It works now.

Thank you so much for Updating and maintaining this awesome website.

Thibs - 08/05/2012 14:46

You've probably missed the line

ln -s /downloads/ezmlm-idx-7.1.1/lang/en_US/ /downloads/ezmlm-idx-7.1.1/lang/default

Or edit /downloads/ezmlm-idx-7.1.1/conf-lang

I've already noticed that it fails with some non english language .. so first try with en_US

Jofin - 08/05/2012 12:04

I am getting the below pasted error while running. /ezmlm-test . Kindly guide me

root@debian:/downloads/ezmlm-idx-7.1.1# ./ezmlm-test

getconfopt library:   OK
ezmlm-make:           OK
Using subdb plugin:   std
ezmlm-reject:         OK
ezmlm-[un|is]sub[n]:  OK
ezmlm-checksub:       OK
ezmlm-send:           OK
ezmlm-tstdig:         OK
ezmlm-weed:           OK
ezmlmrc contents:     OK
ezmlm-clean:          OK
ezmlm-store:          OK
ezmlm-return:         OK
ezmlm-warn (1/2):     OK
ezmlm-manage (1/2):   OK
ezmlm-request:        OK
ezmlm-split:          OK
ezmlm-gate:           OK
ezmlm-idx:            OK
ezmlm-get (index):    OK
ezmlm-get (get):      OK
ezmlm-get (thread):   OK
ezmlm-get (digest):   OK
ezmlm-manage (2/2):   OK
ezmlm-moderate:       OK
ezmlm-warn (2/2):     OK
ezmlm-archive:        OK
ezmlm-dispatch:       OK
dispatch editor:      ezmlm-make: fatal: unable to stat /downloads/ezmlm-idx-7.1.1/lang/default: file does not exist
decode sender:        OK
Verifying message header and body contents...

ezmlm-make: fatal: unable to stat /downloads/ezmlm-idx-7.1.1/lang/default: file does not exist

ezmlm-make failed
Omur - 06/08/2010 14:20

when you're editing conf-ld file be sure "cc -g -B /usr/lib/mysql/" is on the first line. It gives an error message if you accidently hit enter while you editing the file and move the line one below.


Color Coded Qmail Installation Key
  Regular Black Text     Qmail installation notes and summaries by the author.
  Bold Black Text     Commands to be run by you, the installer.
  Bold/Regular Red Text    Vital and/or critical information.
  Regular Blue text     Denotes helpful tips and hints or hyperlinks.
  Regular Orange Text     Command line output.
  Bold/Regular green text     Denotes the contents of a file or script.