qmail-smtpd Listen On 2 Different Ports


My previous posting regarding smtp port 25 blocked by tmnet where TM will block OUTBOUND Simple Mail Transfer Protocol (SMTP) traffic or port 25 for all outgoing e-mails from streamyx dynamic IP addresses.

For those running qmail server, this is the way how to configure qmail-smtpd to listen on another port 587 instead of default port 25. In other word qmail-smtpd will listen on 2 different ports, 25 and 587.

First we copy /var/qmail/supervise/qmail-smtpd to /var/qmail/supervise/qmail-smtpd2 and edit the run script located in the qmail-smtpd2 directory and change the smtp port to 587.

# cd /var/qmail/supervise
# cp -rf qmail-smtpd qmail-smtpd2
# cd qmail-smtpd2
# vi run

 

/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 587 \
/usr/local/bin/rblsmtpd -b -r sbl-xbl.spamhaus.org \
/var/qmail/bin/qmail-smtpd mymailserver.com \
/home/vpopmail/bin/vchkpw /usr/bin/true 2>&1

Edit run script located in the log sub-directory as well.

# vi /var/qmail/supervise/qmail-smtpd2/log/run

 

#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
exec setuidgid qmaill multilog t s100000 n20 /var/log/qmail/qmail-smtpd2 2>&1

Create a symbolic link to your new smtpd2 supervisor directory

# ln -s /var/qmail/supervise/qmail-smtpd2 /service 

Now edit the qmailctl script and duplicate all qmail-smtpd entries with qmail-smtpd2 entries.

# vi /var/qmail/bin/qmailctl

#!/bin/sh
...
...
if svok /service/qmail-smtpd ; then
svc -u /service/qmail-smtpd /service/qmail-smtpd/log
echo "Starting qmail-smtpd"
else
echo "qmail-smtpd supervise not running"
fi
if svok /service/qmail-smtpd2 ; then
svc -u /service/qmail-smtpd2 /service/qmail-smtpd2/log
echo "Starting qmail-smtpd2"
else
echo "qmail-smtpd2 supervise not running"
fi
...
...
echo " qmail-smtpd"
svc -d /service/qmail-smtpd /service/qmail-smtpd/log
echo " qmail-smtpd2"
svc -d /service/qmail-smtpd2 /service/qmail-smtpd2/log
...
...
svstat /service/qmail-smtpd
svstat /service/qmail-smtpd/log
svstat /service/qmail-smtpd2
svstat /service/qmail-smtpd2/log
...
...
echo "Pausing qmail-smtpd"
svc -p /service/qmail-smtpd
echo "Pausing qmail-smtpd2"
svc -p /service/qmail-smtpd2
...
...
echo "Continuing qmail-smtpd"
svc -c /service/qmail-smtpd
echo "Continuing qmail-smtpd2"
svc -c /service/qmail-smtpd2
...
...
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /service/qmail-smtpd /service/qmail-smtpd/log
echo "* Stopping qmail-smtpd2."
svc -d /service/qmail-smtpd2 /service/qmail-smtpd2/log
...
...
echo "* Restarting qmail-smtpd."
svc -u /service/qmail-smtpd /service/qmail-smtpd/log
echo "* Restarting qmail-smtpd2."
svc -u /service/qmail-smtpd2 /service/qmail-smtpd2/log
...
...

Now it’s time to restart qmail services

# qmailctl restart
Restarting qmail:
* Stopping qmail-smtpd.
* Stopping qmail-smtpd2.
* Sending qmail-send SIGTERM and restarting.
* Sending qmail-pop3d SIGTERM and restarting.
* Restarting qmail-smtpd.
* Restarting qmail-smtpd2.
#

Check the service is up and running

# qmailctl stat
/service/qmail-send: up (pid 14156) 12 seconds
/service/qmail-send/log: up (pid 14157) 12 seconds
/service/qmail-smtpd: up (pid 14160) 12 seconds
/service/qmail-smtpd/log: up (pid 14164) 12 seconds
/service/qmail-smtpd2: up (pid 14167) 12 seconds
/service/qmail-smtpd2/log: up (pid 14172) 12 seconds
/service/qmail-pop3d: up (pid 14176) 11 seconds
/service/qmail-pop3d/log: up (pid 14177) 11 seconds
messages in queue: 104
messages in queue but not yet preprocessed: 0
# 

qmail-smtpd should listen on 2 different ports and it’s now up and running on seperate 25 and 587 ports.

No Comments

Leave a reply

You must be logged in to post a comment.