Einen SMTP Port auf einem dedizierten Server hinzufügen


Beschreibung:

In Folge der Blockierung des Port 25 bei einigen Providern kann es sein, dass Sie auf Ihrem Server einen zusätzlichen Port öffnen müssen, um E-Mails nach aussen versenden zu können. Diese Hilfe beschreibt die dazu für die OVH Releases 1 und 2 und für Plesk notwendigen Schritte


Voraussetzungen


Kenntnisse der Verzeichnisstrukter von Linux, beherrschen eines Editors (vi oder nano, vim bei neueren Distributionen).


OVH Release 1 - Red Hat 7.2


Zuerst müssen Sie sich per SSH mit dem Server als Benutzer root verbinden. Sobald Sie verbunden sind können Sie folgende Datei mit dem Editor Ihrer Wahl bearbeiten:

/etc/init.d/qmail


Diese enthält folgendes:

#!/bin/sh


# Qmail Startup


# Source function library.
. /etc/rc.d/init.d/functions


# See how we were called.
case "$1" in
start)
cd /
echo -n "Starting: "
env - PATH="/var/qmail/bin:/usr/local/bin" \
/var/qmail/bin/qmail-start ./Maildir/ /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmail &
echo -n "qmail "

env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -c100 0 pop-3 /var/qmail/bin/qmail-popup \
maxime.d.ovh.net \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
echo -n "pop "

env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u503 -g503 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 > /dev/null &
echo "smtp"
;;
stop)
cd /
echo -n "stopping qmail"
killproc qmail-send
killproc tcpserver
echo
;;
restart)
$0 stop
$0 start
;;
status)
status qmail-send
;;
*)
echo "Usage: qmail {start|stop|restart|status}"
exit 1
esac


exit 0



Wir nehmen folgenden Abschnitt:

env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u503 -g503 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 > /dev/null &
echo "smtp"
;;


Den wir verdoppeln um folgendes zu erhalten:

#!/bin/sh


# Qmail Startup


# Source function library.
. /etc/rc.d/init.d/functions


# See how we were called.
case "$1" in
start)
cd /
echo -n "Starting: "
env - PATH="/var/qmail/bin:/usr/local/bin" \
/var/qmail/bin/qmail-start ./Maildir/ /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmail &
echo -n "qmail "

env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -c100 0 pop-3 /var/qmail/bin/qmail-popup \
maxime.d.ovh.net \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
echo -n "pop "

env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u503 -g503 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 > /dev/null &
echo "smtp"
env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u503 -g503 0 587 \
/var/qmail/bin/qmail-smtpd 2>&1 > /dev/null &
echo "smtp587"
;;

stop)
cd /
echo -n "stopping qmail"
killproc qmail-send
killproc tcpserver
echo
;;
restart)
$0 stop
$0 start
;;
status)
status qmail-send
;;
*)
echo "Usage: qmail {start|stop|restart|status}"
exit 1
esac


Wir modifizieren den verdoppelten Abschnitt um folgendes zu erhalten:

#!/bin/sh


# Qmail Startup


# Source function library.
. /etc/rc.d/init.d/functions


# See how we were called.
case "$1" in
start)
cd /
echo -n "Starting: "
env - PATH="/var/qmail/bin:/usr/local/bin" \
/var/qmail/bin/qmail-start ./Maildir/ /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmail &
echo -n "qmail "

env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -c100 0 pop-3 /var/qmail/bin/qmail-popup \
maxime.d.ovh.net \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
echo -n "pop "

env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u503 -g503 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 > /dev/null &
echo "smtp"
;;
env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u503 -g503 0 587 \
/var/qmail/bin/qmail-smtpd 2>&1 > /dev/null &
echo "smtp587"
;;

stop)
cd /
echo -n "stopping qmail"
killproc qmail-send
killproc tcpserver
echo
;;
restart)
$0 stop
$0 start
;;
status)
status qmail-send
;;
*)
echo "Usage: qmail {start|stop|restart|status}"
exit 1
esac


Dann kann man den E-Mail Server neu starten:

/etc/init.d/qmail restart


Wir prüfen dass der Port nun wirklich aktiv ist:

netstat -tanpu | grep 587


Anschliessend können Sie diesen Port in Ihrem E-Mail Programm konfigurieren:


Release 2 - Gentoo OVH


Wir editieren die Startdatei von qmail

vim /etc/init.d/qmail

#!/sbin/runscript
# Copyright 1999-2006 Gentoo Foundation
  1. Distributed under the terms of the GNU General Public License v2
  2. $Header: $

depend() {
use net
before ntpd ntp-client spamd apache apache2
}

start() {
cd /

ebegin "Starting Qmail"
env - PATH="/var/qmail/bin:/usr/local/bin" \
/var/qmail/bin/qmail-start ./Maildir/ 2>&1 | /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmail/ &
eend $?
ebegin "Starting Pop"
env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -c100 0 pop-3 /var/qmail/bin/qmail-popup \
ks301019.kimsufi.com \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 \
| /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmailpop3/ &
eend $?
ebegin "Starting Smtp"
env - PATH="/var/qmail/bin:/usr/local/bin" CHKUSER_START="DOMAIN" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u508 -g503 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 \
| /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmailsmtp/ &
eend $?

}

stop() {
ebegin "Stopping Qmail"
killall qmail-send
killall tcpserver
eend $?
}


Wir nehmen den Abschnitt:

ebegin "Starting Smtp"
env - PATH="/var/qmail/bin:/usr/local/bin" CHKUSER_START="DOMAIN" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u508 -g503 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 \
| /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmailsmtp/ &
eend $?


Wir verdoppeln diesen um folgende Datei zu erhalten:

#!/sbin/runscript
#Copyright 1999-2006 Gentoo Foundation
#Distributed under the terms of the GNU General Public License v2
#$Header: $

depend() {
use net
before ntpd ntp-client spamd apache apache2
}

start() {
cd /

ebegin "Starting Qmail"
env - PATH="/var/qmail/bin:/usr/local/bin" \
/var/qmail/bin/qmail-start ./Maildir/ 2>&1 | /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmail/ &
eend $?
ebegin "Starting Pop"
env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -c100 0 pop-3 /var/qmail/bin/qmail-popup \
ks301019.kimsufi.com \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 \
| /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmailpop3/ &
eend $?
ebegin "Starting Smtp"
env - PATH="/var/qmail/bin:/usr/local/bin" CHKUSER_START="DOMAIN" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u508 -g503 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 \
| /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmailsmtp/ &
eend $?
ebegin "Starting Smtp"
env - PATH="/var/qmail/bin:/usr/local/bin" CHKUSER_START="DOMAIN" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u508 -g503 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 \
| /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmailsmtp/ &
eend $?

}

stop() {
ebegin "Stopping Qmail"
killall qmail-send
killall tcpserver
eend $?
}


On modifie alors la section dédoublée pour obtenir cela, modification du nom du service, modification de smtp par 587 /var/log/qmailsmtp par /var/log/qmailsmtp587/ :

ebegin "Starting Smtp587"
env - PATH="/var/qmail/bin:/usr/local/bin" CHKUSER_START="DOMAIN" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u508 -g503 0 587 \
/var/qmail/bin/qmail-smtpd 2>&1 \
| /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmailsmtp587/ &
eend $?


Wir erhalten dann diese Datei:

#!/sbin/runscript
#Copyright 1999-2006 Gentoo Foundation
#Distributed under the terms of the GNU General Public License v2
#$Header: $

depend() {
use net
before ntpd ntp-client spamd apache apache2
}

start() {
cd /

ebegin "Starting Qmail"
env - PATH="/var/qmail/bin:/usr/local/bin" \
/var/qmail/bin/qmail-start ./Maildir/ 2>&1 | /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmail/ &
eend $?
ebegin "Starting Pop"
env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -H -R -c100 0 pop-3 /var/qmail/bin/qmail-popup \
ks301019.kimsufi.com \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 \
| /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmailpop3/ &
eend $?
ebegin "Starting Smtp"
env - PATH="/var/qmail/bin:/usr/local/bin" CHKUSER_START="DOMAIN" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u508 -g503 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 \
| /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmailsmtp/ &
eend $?
env - PATH="/var/qmail/bin:/usr/local/bin" CHKUSER_START="DOMAIN" \
tcpserver -H -R -x /etc/tcp.smtp.cdb -c100 -u508 -g503 0 587 \
/var/qmail/bin/qmail-smtpd 2>&1 \
| /usr/local/bin/tai64n \
| /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog /var/log/qmailsmtp587/ &
eend $?

}

stop() {
ebegin "Stopping Qmail"
killall qmail-send
killall tcpserver
eend $?
}


On peut alors enregistrer

On peut alors saisir ces commandes, pour ajouter le dossier de logs pour le nouveau démon smtp et lui permettre d'écrire dans le dossier:

nsXXX ~ # mkdir /var/log/qmailsmtp587
nsXXX ~ # chown qmaill:root /var/log/qmailsmtp587


On peut alors stopper le serveur email (clamantivirus, spamassassin, puis qmail):

nsXXX ~ #/etc/init.d/clamd stop
nsXXX ~ #/etc/init.d/spamd stop
nsXXX ~ #/etc/init.d/qmail stop


Les emails sont gérés dans une queue par le serveur, et sont pris en charges par plusieurs programmes, il faut donc patienter que les traitements commencés au moment du stop sont bien terminés, car tant que le processus n'a pas fini de travailler, il ecrit dans les logs et bloque lesdits fichiers en écriture à une autre processus, il faut donc executer la commande suivante, afin de s'assurer que le lock sur ces fichiers est terminé:

nsXXX ~ #ps aux | grep multi


Lorsque la commande ne renvoie plus que la ligne mentionnant la commande "grep", vous pouvez relancer votre serveur email:

nsXXX ~ #/etc/init.d/clamd start
nsXXX ~ #/etc/init.d/spamd start
nsXXX ~ #/etc/init.d/qmail start


Vous pouvez alors vérifier le fonctionnement du nouveau serveur smtp:

nsXXX ~ #netstat -tanpu | grep 587


Si tout va bien vous aurez le port correspondant ouvert :

tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 2358/tcpserver


Vous pouvez alors tenter un envoi en utilisant ce port depuis votre client de messagerie favori

Distributions Plesk


Il faut d'abord copier le fichier suivant:

cp /etc/xinetd.d/smtp_psa /etc/xinetd.d/smtp_psa_alt


Ensuite il faut éditer la version copiée, par exemple:

vi /etc/xinetd.d/smtp_psa_alt


et modifier le contenu de la premiere ligne pour ebtenir ceci:

service smtp_psa_alt


Ensuite, éditer le fichier /etc/services , puis tout en bas ajouter cette ligne:

smtp_psa_alt 587/tcp # new SMTP port


On redémarre ensuite xinetd:

/etc/init.d/xinetd restart


Pour vérifier que le port en question est ouvert:

netstat -tanpu | grep 587


Vous pouvez alors configurer votre logiciel de messagerie favori pour envoyer vos emails