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 [email protected] 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 [email protected].

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=<[email protected]>
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: from=<[email protected]>, size=283, nrcpt=1 (queue active)
Mar  7 09:39:18 linux1 postfix/smtp[31558]: F3B9C98025E: to=<[email protected]>, 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: [email protected]
postmaster:    root

donde [email protected] 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?)

oz1cz
fuente
¿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!

Dom
fuente
¿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.

ColinM
fuente
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
[email protected]
0 0 * * * /usr/bin/somescript
Dale Anderson
fuente
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.

r2oro
fuente