Obtener postfix para reenviar el correo de root


13

Tengo un servidor Ubuntu que ejecuta postfix. No es el servidor de correo de mi dominio.

Cada vez que se ejecuta un trabajo cron para root, el correo de salida no se entrega localmente, sino que se envía a root@mydomain.com a través del servidor de correo principal. Esto no es lo que quiero.

Quiero que el correo de root sea entregado localmente o reenviado a anothermail@anotherdomain.com.

Intenté modificar ambos ~root/.forwardy /etc/aliases(y ejecutar nuevos alias), pero nada ayuda (supongo que estos archivos solo se verifican cuando Postfix intenta entregar el correo localmente).

¿Que puedo hacer?

Esto es /etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
myhostname = linux1.mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = linux1.mydomain.com, localhost.linux1.mydomain.com, localhost
relayhost = my.isps.relayhost.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

Editar:

Al enviar correo a la raíz, esto entra en /var/log/mail.log:

Mar  7 09:39:17 linux1 postfix/pickup[31381]: F3B9C98025E: uid=1000 from=<ct>
Mar  7 09:39:18 linux1 postfix/cleanup[31556]: F3B9C98025E: message-id=<20130307083917.F3B9C98025E@linux1.mydomain.com>
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: from=<ct@mydomain.com>, size=283, nrcpt=1 (queue active)
Mar  7 09:39:18 linux1 postfix/smtp[31558]: F3B9C98025E: to=<root@mydomain.com>, orig_to=<root>, relay=my.isps.relayhost.com[<IP address omitted>]:25, delay=0.72, delays=0.19/0.02/0.27/0.25, dsn=2.0.0, status=sent (250 Ok: queued as A97F5D8126)
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: removed

El nombre "ct" es mi nombre de usuario. Genere el texto anterior a través de este comando:

echo test | mail -s test root

El contenido de /etc/mailnamees:

mydomain.com

El contenido de /etc/aliaseses:

root: anothermail@anotherdomain.com
postmaster:    root

donde anothermail@anotherdomain.com es donde me gustaría que se reenvíe el correo de root.

El contenido de /etc/hostsrealmente me sorprende un poco:

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

donde "mylinux" es el nombre de host de un sistema operativo host bajo el cual linux1 se ejecuta como una máquina virtual. No estoy seguro de cómo "mylinux" llegó allí. (¿Pero podría ser esta la razón de mi problema?)


¿Podría proporcionarnos sus registros de postfix cuando envíe un correo a root?
Dom

Lo hice en una edición de la publicación original.
oz1cz

¿Podría darnos sus archivos / etc / mailname y / etc / aliases? Compruebe si / etc / hosts contiene linux1.mydomain.com asignado a 127.0.1.1
Dom

He agregado la información a la publicación original.
oz1cz

Según sus registros, el correo se ha enviado correctamente a su retransmisión isp smtp. Les pediría (isp) que verifiquen en my.isps.relayhost.com [<dirección IP omitida>] los registros de cualquier pista (antispam, error, ...) sobre el problema.

Respuestas:


13

Como de costumbre, revise sus registros.

En su caso, el demonio postfix piensa que el correo no es para él y lo envía sin usar /etc/aliases

Primero verifique su /etc/hostsarchivo: debe tener el nombre de su máquina correspondiente a 127.0.1.1: 127.0.1.1 linux1.mydomain.com linux1

Comprueba tu /etc/mailnametambién, y debe ser consistente.

Compruebe su /etc/aliasespara ver si el usuario raíz se envía a otras personas, y rehaga el newaliasescomando.

¡Y debería funcionar!


¿Debería ser eso 127.0.0.1?
Nate

Puede tener cualquier dirección en 127.0.0.0/8, por lo que 127.0.0.1 también funciona bien
Dom

Tuve un problema similar mientras solo quería usar un relé inteligente para enviar correos: "myhostname" tenía que ser "localhost". Cualquier otra cosa omitió el archivo de alias.
Alex

8

Si mydestinationestá vacía o no contiene $myhostnameentonces el /etc/aliasesserá ignorado porque Postfix piensa que el correo electrónico no es una entrega local y por lo tanto no se aplicará a los alias locales. Por lo tanto, deje mydestinationel valor predeterminado ( postconf -d mydestinationo elimínelo main.cf) y los registros deben mostrar to=<...>su dirección con alias.


Estoy usando un servidor de correo externo y mydestinationdebo estar vacío. De lo contrario, no se envía ningún correo.
Corni

1

En algunas circunstancias, (es decir, cuando todo el correo se retransmite a un sistema externo), es más fácil configurar la MAILTOvariable en el crontab de la raíz a una dirección de correo electrónico real. Esto debería pasar por alto la entrega tradicional a la raíz y simplemente hacer que vaya a donde quieras.

# Root's crontab
MAILTO=someone@example.com
0 0 * * * /usr/bin/somescript

0

Parece haber algún problema con la apertura del /root/.forwarddemonio postfix, al menos en un sistema reforzado (no profundicé en él). A pesar de:

# ls -ld / /root /root/.forward
dr-xr-xr-x. 18 root root  236 Dec  4 00:02 /
dr-xr-x--x. 13 root root 4096 Jan  8 17:45 /root
-rw-r--r--.  1 root root   30 Jan  8 14:51 /root/.forward

El hijo del demonio postfix no puede acceder a .forward:

7603  open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 16
7603  fstat(16, {st_mode=S_IFREG|0644, st_size=1227, ...}) = 0
7603  mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f86854fb000
7603  read(16, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1227
7603  close(16)                         = 0
7603  munmap(0x7f86854fb000, 4096)      = 0
7603  geteuid()                         = 89
7603  getegid()                         = 89
7603  geteuid()                         = 89
7603  setresuid(-1, 0, -1)              = 0
7603  setresgid(-1, 0, -1)              = 0
7603  setgroups(1, [0])                 = 0
7603  lstat("/root/.forward", 0x7ffc03f84750) = -1 EACCES (Permission denied)

No tuve tiempo de profundizar en eso ... Anexar la entrada /etc/aliasesseguida de newaliasesfunciona bien.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.