Eu tenho um servidor Ubuntu executando o postfix. Não é o servidor de correio do meu domínio.
Sempre que um trabalho cron é executado como root, o email de saída não é entregue localmente, mas é enviado para [email protected] através do servidor de email principal. Não é isso que eu quero.
Desejo que o correio para raiz seja entregue localmente ou encaminhado para [email protected].
Eu tentei modificar ambos ~root/.forward
e /etc/aliases
(e executando newaliases), mas nada ajuda (acho que esses arquivos são verificados apenas quando o postfix tenta entregar emails localmente).
O que eu posso fazer?
Isto é /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:
Ao enviar email para o root, isso entra em /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
O nome "ct" é o meu nome de usuário. Eu gerei o texto acima através deste comando:
echo test | mail -s test root
O conteúdo de /etc/mailname
é:
mydomain.com
O conteúdo de /etc/aliases
é:
root: [email protected]
postmaster: root
onde [email protected] é para onde gostaria que o email do root fosse encaminhado.
O conteúdo de /etc/hosts
realmente me surpreende um pouco:
127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1
onde "mylinux" é o nome do host de um sistema operacional host no qual o linux1 é executado como uma máquina virtual. Não tenho certeza de como o "mylinux" chegou lá. (Mas isso poderia realmente ser o motivo do meu problema?)
Respostas:
Como de costume, verifique seus logs.
No seu caso, o daemon postfix acha que o correio não é para ele e o envia sem usar
/etc/aliases
Primeiro verifique seu
/etc/hosts
arquivo: ele deve ter o nome da sua máquina correspondente a 127.0.1.1:127.0.1.1 linux1.mydomain.com linux1
Verifique o seu
/etc/mailname
também, e deve ser consistente.Verifique seu
/etc/aliases
para ver se o usuário root é enviado para outras pessoas e refaça onewaliases
comando.E deve funcionar!
fonte
127.0.0.1
?Se
mydestination
estiver vazio ou não contiver$myhostname
,/etc/aliases
será ignorado porque o postfix acha que o email não é uma entrega local e, portanto, não aplicará os aliases locais. Portanto, deixemydestination
no padrão (postconf -d mydestination
ou remova-omain.cf
) e os logs devem mostrarto=<...>
como o seu endereço alternativo.fonte
mydestination
deve estar vazio. Caso contrário, nenhum email será enviado.Em algumas circunstâncias (por exemplo, onde todo o correio é retransmitido para um sistema externo), é mais fácil definir a
MAILTO
variável no crontab da raiz como um endereço de email real. Isso deve ignorar a entrega tradicional para fazer o root e apenas ir para onde você quiser.fonte
Parece haver algum problema com a abertura do
/root/.forward
daemon postfix, pelo menos no sistema reforçado (eu não o mergulhei). Apesar de:O filho do daemon postfix não pode acessar .forward:
Não tive tempo de investigar ... Anexar entrada a
/etc/aliases
seguida pornewaliases
funciona bem.fonte