smtp_bind_address sender_dependent_relayhost_maps postfix mynetworks message_size_limit length home_mailbox benchmark postfix-mta performance

postfix mta - sender_dependent_relayhost_maps - Cómo controlar el estado del MTA de Postfix



postfix smtp_bind_address (3)

Puede usar los programas de línea de comando que vienen con Postfix:

  • mailq: muestra qué colas tienen el correo ''procesado''
  • postqueue -p: es qué mailq realmente referencias
  • postqueue -f: vacía todo el correo en cola, tratando de conseguirlo de inmediato
  • ps aux: muestra los procesos en ejecución en el servidor, busca cosas como:
    • smtpd
    • proxymap
    • yunque
    • trivial-reescribir
    • qmgr
    • recoger
    • showq

Lo que encuentre con el comando ps variará según cómo configure las cosas.

¿Cuál es un buen comando para monitorear una instalación de Postfix en un servidor Linux? Debe ser un comando que se puede ejecutar desde un símbolo del sistema en una sesión SSH y devuelve información sobre si el proceso postfix está activo y el tamaño de las colas de correo relevantes.

EDITAR

Es posible que esto no parezca estar en el tema de Desbordamiento de pila (¿Tal vez sea mejor para la falla del servidor?), Pero sí está relacionado con el desarrollo de software. En ese momento, estaba creando una aplicación compleja de envío de correo que usaba múltiples MTA para la entrega de correo. Si la cola de correo en un servidor creció demasiado, entonces debería preferir otros MTA menos ocupados. Por lo tanto, la aplicación de control necesitaba una forma de mantener una conexión SSH con cada MTA y monitorear periódicamente su estado.

Si la necesidad de monitoreo era simplemente para fines administrativos, hay muchas herramientas GUI que lo hacen mucho más fácilmente.


En orden de preferencia:

La mejor manera es enviar mensajes de latido a través del servidor de correo y controlar su llegada al destino.

Use mailq y qshape (incluido con las distribuciones de postfix recientes) para supervisar las colas.

Puede verificar que smtpd esté escuchando y devolviendo un banner usando netcat (las opciones para netcat varían según el sistema operativo, estas son para Linux):

nc -w 1 localhost 25 </dev/null

A continuación, se informará el número de procesos para cada daemon postfix, agrupados por maestro (múltiples maestros si tiene varias instancias de postfix).

ps -e -o pid,ppid,fname | perl -lane '' if ($F[1] != 1) { ++$c{$F[1]}->{$F[2]}; } elsif ($F[2] eq "master") { push(@masters, $F[0]); } END { foreach $master (@masters) { print "=== master: $master ==="; foreach $agent (keys %{$c{$master}}) { printf "/t%-5d %s/n", $c{$master}->{$agent}, $agent; } } } ''


Además de la respuesta anterior de Bryan Rehbein, aquí hay un script que uso para monitorear las longitudes de cola de postfix. Todo lo que hace es enviar una alerta por correo electrónico una vez que la cola crece más allá de los mensajes X en tamaño. La alerta se envía utilizando msmtp (un cliente smtp de línea de comando diminuto) por lo que omite la instalación local de posfijo (en la que no puede confiar para obtener su alerta a tiempo si sus colas están creciendo ...)

#!/bin/bash # # Postfix queue length monitoring script (requires msmtp) # # This script checks the active, incoming, deferred and maildrop postfix queue directories. # # If the number of messages in any of these directories is more than $MAX_QUEUE_LENGTH, # the script will generate an alert email and send it using msmtp. We use msmtp so that # we can bypass the local postfix installation (since if the queues are getting big, # the alert email may not be sent in time to catch the problem). # ######################################################### # SET SCRIPT VARS ######################################################### # Path to msmtp binary (e.g. /usr/bin/msmtp on Debian systems) MSMTP=/usr/bin/msmtp # Remote mail host (this is the mail server msmtp will use to send the alert. It should NOT be the local postfix installation) MAILHOST=backup.mailserver.com # Remote mail port MAILPORT=25 # Mail protocol MAILPROTO=smtp # Fully qualified domain name of local postfix installation DOMAIN=primary.mailserver.com # From address [email protected] # Recipient (this address should not route to the local postfix installation, for obvious reasons) MAILTO="[email protected]" # Email subject MAILSUBJECT="Postfix queue length alert for ${DOMAIN}" # MSMTP log file LOGFILE=/var/log/msmtp.log # Root of the postfix queue dirs (e.g. /var/spool/postfix on Debian systems). Note: no trailing slash. QUEUEDIR_ROOT="/var/spool/postfix" # Max queue length (if there are more messages in a queue than this number, we will send an alert) MAX_QUEUE_LENGTH=10 ######################################################### # SCRIPT LOGIC STARTS HERE ######################################################### # Check msmtp binary exists if [ ! -f ${MSMTP} ] then echo "Cannot find ${MSMTP}. Exiting." exit 1 fi # Get the number of messages sitting in each postfix queue directory Q_ACTIVE=$(find ${QUEUEDIR_ROOT}/active -type f | wc -l) Q_INCOMING=$(find ${QUEUEDIR_ROOT}/incoming -type f | wc -l) Q_DEFERRED=$(find ${QUEUEDIR_ROOT}/deferred -type f | wc -l) Q_MAILDROP=$(find ${QUEUEDIR_ROOT}/maildrop -type f | wc -l) # If any of these queues contain more than $MAX_QUEUE_LENGTH issue an alert if [ ${Q_ACTIVE} -gt ${MAX_QUEUE_LENGTH} -o ${Q_INCOMING} -gt ${MAX_QUEUE_LENGTH} -o ${Q_DEFERRED} -gt ${MAX_QUEUE_LENGTH} -o ${Q_MAILDROP} -gt ${MAX_QUEUE_LENGTH} ]; then ( echo "From: ${MAILFROM} " echo "To: ${MAILTO} " echo "Mime-Version: 1.0" echo ''Content-Type: text/plain; charset="iso-8859-1"'' echo "Subject: ${MAILSUBJECT}" echo "" echo "One or more of the postfix queues on ${DOMAIN} has grown beyond ${MAX_QUEUE_LENGTH} messages in length." ) | ${MSMTP} --host=${MAILHOST} --port=${MAILPORT} --protocol=${MAILPROTO} --domain=${DOMAIN} --auth=off --tls=off --from=${MAILFROM} --logfile=${LOGFILE} --syslog=off --read-recipients exit 2 fi exit 0