systemadmin.es > Correo > Usando qmail para entregar correo a nuestro relay

Usando qmail para entregar correo a nuestro relay

Resulta común disponer de un relay interno para todas las máquinas de producción. Vamos a ver como usar un qmail mínimo para entregar el correo a este relay.

Primero de todo vamos a definir la IP de nuestro relay con el siguiente comando:

export IPRELAY="1.2.3.4"

A continuación podemos hacer un copy-paste de los siguientes comandos para instalar qmail y configurarlo que entregue el correo directamente a dicho relay:

/etc/init.d/sendmail stop
rpm -e sendmail --nodeps
mkdir -p /usr/local/src
cd /usr/local/src
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar xzf daemontools-0.76.tar.gz
sed -i 's/extern int errno;/#include <errno.h>/' admin/daemontools-0.76/src/error.h
cd admin/daemontools-0.76/
./package/install
cd /usr/local/src
wget http://www.qmail.org/netqmail-1.06.tar.gz
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
for depe in gcc gcc-c++ make wget curl libtermcap-devel;
do
        yum install $depe -y;
done
tar xzf netqmail-1.06.tar.gz
tar xzf ucspi-tcp-0.88.tar.gz
mkdir /var/qmail
cd /usr/local/src/netqmail-1.06
export TMP=$(mktemp /tmp/lol.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX)
echo '#!/bin/bash' >$TMP
cat /usr/local/src/netqmail-1.06/INSTALL.ids | grep -i Linux -A 11 | grep "#" | sed 's/$/;/ig' | sed 's/#//ig' >>$TMP
bash $TMP
rm $TMP
sed -i 's#::/var/qmail/alias:/bin/bash#::/var/qmail/alias:/bin/true#' /etc/passwd
sed -i 's#::/var/qmail:/bin/bash#::/var/qmail:/bin/true#' /etc/passw
unset TMP
make setup check
./config-fast $(hostname --long)
cd /usr/local/src/ucspi-tcp-0.88
patch < /usr/local/src/netqmail-1.06/other-patches/ucspi-tcp-0.88.errno.patch
make
make setup check
cat > /var/qmail/rc <<EOF
#!/bin/sh

# Using stdout for logging
# Using control/defaultdelivery from qmail-local to deliver messages by default

exec env - PATH="/var/qmail/bin:\$PATH" \\
qmail-start "\$(cat /var/qmail/control/defaultdelivery)"
EOF
chmod 755 /var/qmail/rc
mkdir /var/log/qmail
mkdir -p /var/qmail/supervise/qmail-send/log
cat > /var/qmail/supervise/qmail-send/run <<EOF
#!/bin/sh
exec /var/qmail/rc
EOF
cat > /var/qmail/supervise/qmail-send/log/run <<EOF
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
EOF
chmod +x /var/qmail/supervise/qmail-send/run /var/qmail/supervise/qmail-send/log/run
mkdir -p /var/log/qmail
chown qmaill /var/log/qmail
ln -s /var/qmail/supervise/qmail-send /service/
echo '127.:allow,RELAYCLIENT=""' >/etc/tcp.smtp
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp.cdb
mv /usr/lib/sendmail /usr/lib/sendmail.old 2>/dev/null
mv /usr/sbin/sendmail /usr/sbin/sendmail.old 2>/dev/null
chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old 2>/dev/null
ln -s /var/qmail/bin/sendmail /usr/lib
ln -s /var/qmail/bin/sendmail /usr/sbin
echo ":${IPRELAY}" >/var/qmail/control/smtproutes

Al terminar de ejecutar los comandos tendremos los siguientes procesos arrancados:

root      1537  0.0  0.0   3636   332 ?        S    Mar30   0:00  |   \_ supervise qmail-send
qmails    1538  0.0  0.0   3816   436 ?        S    Mar30   0:00  |   |   \_ qmail-send
root      1542  0.0  0.0   3780   392 ?        S    Mar30   0:00  |   |       \_ qmail-lspawn
qmailr    1543  0.0  0.0   3776   396 ?        S    Mar30   0:00  |   |       \_ qmail-rspawn
qmailq    1544  0.0  0.0   3764   380 ?        S    Mar30   0:00  |   |       \_ qmail-clean
root      1539  0.0  0.0   3632   328 ?        S    Mar30   0:00  |   \_ supervise log
qmaill    1540  0.0  0.0   3648   328 ?        S    Mar30   0:00  |       \_ /usr/local/bin/multilog t /var/log/qmail

A continuación con el comando mail podremos comprobar su funcionamiento:

echo "prueba" | mail -s "prueba" jordi@systemadmin.es

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>