Archive

Archive for the ‘E-mail’ Category

Postfix a La Carte :)

Este e uma compilação das formas possiveis de uso do postfix como eu tive uma certa dificuldade de entender alguns conceitos do postfix como para que servia o virtual_alias_* , virtual_mailbox_*.

Então resolvi falar um pouco sobre algumas formas que o postfix trabalha.  Vamos lá 😀

Arroz com feijão

O feijão com arroz do postfix é bem simples iremos configurar um servidor de e-mail respondendo a um único dominio apenas. No nosso exemplo o dominio será yamaha.com.br. Será usada essa mesma configuração para todos os ambientes posteriores de teste que utilizaremos.

Dominio: yamaha.com.br
SMTP: mail.yamaha.com.br
Endereço IP: 192.168.1.10/24

Segue topologia abaixo:


myhostname = mail.yamaha.com.br
mydomain = yamaha.com.br
mydestination = localhost, yamaha.com.br

Vamos la o primeiro parametro é o “myhostname” o qual é o nome do host que esta instalado o servidor de e-mail, ou seja o MTA(MTA e o servidor de e-mail proprieamente dito) no nosso caso configuramos o nome do servidor de e-mail como “mail.yamaha.com.br” um nome ficticio.
O segundo parametro é o “mydomain” que indica o nome do domínio que o servidor de e-mail(postfix) acomoda.
O terceiro parametro “mydestination” e muito importante ele que diz quais dominios o servidor de e-mail ira atender, no caso yamaha.com.br, entao sendo assim todos os emails destinados ao user@yamaha.com.br deverá ser entregue ao nosso servidor com endereço ip 192.168.1.10 ou mail.yamaha.com.br qualquer outra coisa por exemplo user@honda.com.br será rejeitado com a mensagem nos logs “user unknown”.

Funcionamento

O usuário na estação workstation envia um email apartir de fulano@yamaha.com.br para ciclano@yamaha.com.br, para esse envio funcionar os usuarios fulano e ciclano devem existir no /etc/passwd. Outro exemplo o fulano@honda.com.br envia e-mail para ciclano@yamaha.com.br o mta do dominio honda ira consultar o registro MX do dominio yamaha.com.br no servidor dns responsavel pelo dominio no caso ns1.yamaha.com.br o qual irá responder mail.yamaha.com.br, assim sendo o cliente fulano@honda.com.br envia outro pedido para resolucao de endereço ip do nome mail.yamaha.com.br para somente entao enviar o email para ciclano@yamaha.com.br. Quando o postfix receber o pacote de dados ira checar se existe o usuario ciclano no /etc/passwd e entregar a mensagem. Esse e o hello world em postfix 😀

Preparando os ingredientes

Blz funcionou o ambiente com um único dominio, mas se eu precisar de que um postfix atender a mais de um dominio. Por exemplo yamaha.com.br e honda.com.br? para isso vou utilizar o virtual domain do postfix. Postfix pode enviar, receber e armazenar mensagem para mais de um dominio usando dois métodos.

  • virtual_alias_domains
  • virtual_mailbox_domains

O primeiro método virtual_alias_domains expande o número de dominios para o qual o servidor postfix é o destino final. Os dominios listados no parametro “mydestination” são chamados de dominios canonicos porque normalmente listão todas os domínios da máquina local. Para ter dominios a mais ou seja sem o dominio ser local é preciso criar um virtual_alias_domains. Por exemplo no exemplo anterior nos tinhamos o base de usuarios de email ficava no /etc/passwd e atendia pelo dominio yamaha.com.br, porém imaginemos que acontece aquelas fusões de grandes empresas e a yamaha comprasse a honda. Entao teriamos que ter alguns usuarios com o dominio yamaha.com.br e o dominio honda, dessa forma teriamos o usuário fulano como fulano@yamaha.com.br e fulano@honda.com.br na mesma máquina. Utilizando a configuração anterior poderiamos ter esse ambiente utilizando virtual_alias_domains. Um alias e um apelido logo um alias_domains e um apelido para o dominio no caso o dominio local se chama yamaha.com.br e o apelido seria honda.com.br. Esse apelido pode ser para a mesma conta de usuario, mailbox ou para conta de usuario distinta, outra mailbox. Segue nova configuração abaixo.

myhostname = mail.yamaha.com.br
mydomain = yamaha.com.br
mydestination = localhost, yamaha.com.br
virtual_alias_domains = honda.com.br
virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps

Veja o arquivo “/etc/postfix/virtual_alias_maps”.


# honda.com.br
postmaster@honda.com.br postmaster@yamaha.com.br
jaspion@honda.com.br jaspion@yamaha.com.br
batman@honda.com.br bruce@yamaha.com.br
bruce@honda.com.br bruce@yamaha.com.br

Espaguete

Vamos testar o envio de mensagem.


# echo test | sendmail bruce@honda.com.br
ou
# mail -s test bruce@honda.com.br

Vejam os logs do envio do e-mail.


Mar 26 08:28:04 mail postfix/qmgr[5224]: C8FDBF292:
from=<root@yamaha.com.br>, size=1266, nrcpt=1 (queue active)
Mar 26 08:28:04 mail postfix/smtpd[5230]: disconnect from
localhost[127.0.0.1]
Mar 26 08:28:04 mail postfix/local[5226]: C8FDBF292:
to=<bruce@honda.com.br>, relay=local, delay=0.02,
delays=0.01/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)

Vemos nas partes em negrito a origem(quem enviou o e-mail) e o destino do e-mail no caso root@yamaha.com.br(from) e bruce@honda.com.br(to).

Rocambolé de carne 😛

O próximo método de virtual domain é o virtual_mailbox_domains, um virtual_mailbox_domains são domínios para os usuários que não têm uma conta local (isto é, para os usuários que não estão no arquivo /etc/passwd). Existe um agente de entrega(delivery agent): virtual e local. Por padrão o postfix utiliza o agente local o agente de entrega virtual(virtual delivery agent) não pode acessar seu sistema de usuário local(/etc/passwd) para procurar os nomes dos destinatários. Em vez disso, o agente de distribuição virtual depende inteiramente de mapa que não têm nada a ver com o seu sistema informados na configuração(virtual_mailbox_maps, virtual_mailbox_aliases). Segue abaixo uma configuração utilizando virtual_mailbox_*.


myhostname = mail.yamaha.com.br
mydomain = yamaha.com.br
mydestination = localhost.$mydomain, $myhostname
mynetworks = 127.0.0.0/8, 192.168.0.0/16, 10.1.4.0/24, 10.0.0.0/24
virtual_mailbox_domains = honda.com.br
virtual_uid_maps = static:2001
virtual_gid_maps = static:1001
virtual_mailbox_base = /maildir
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_recipients
virtual_alias_maps = hash:/etc/postfix/virtual_mailbox_aliases

Arquivo “/etc/postfix/virtual_mailbox_recipients”.


batman@honda.com.br batman/
robin@honda.com.br robin/
aquaman@honda.com.br aquaman/
superman@honda.com.br superman/
flash@honda.com.br flash/

O caracter “/” indica que a mailbox está no formato maildir não mais em mailbox, que é o padrão do postfix. Arquivo “/etc/postfix/virtual_mailbox_aliases”


bruce@honda.com.br batman@honda.com.br
dick@honda.com.br robin@honda.com.br
clark@honda.com.br superman@honda.com.br
barry@honda.com.br flash@honda.com.br

Vamos testar o envio de mensagem.


# echo test | sendmail bruce@honda.com.br
ou
# mail -s test bruce@honda.com.br

Vejam os logs do envio do e-mail.


Mar 26 08:28:04 mail postfix/qmgr[5224]: C8FDBF292:
from=<root@yamaha.com.br>, size=1266, nrcpt=1 (queue active)
Mar 26 08:28:04 mail postfix/smtpd[5230]: disconnect from
localhost[127.0.0.1]
Mar 26 08:28:07 mail postfix/local[5226]: CE83BF287:
to=<batman@honda.com.br>, orig_to=<bruce@honda.com.br>,
relay=local, delay=0.24, delays=0.01/0/0/0.24, dsn=2.0.0, status=sent
(delivered to maildir)

Lembrando que toda essa configuração ocorreu sem autenticação e apenas para ilustrar e elucidar os conceitos de virtual_alias e virtual_mailbox que quando comecei a mexer com postfix achei muito confuso e não vi uma documentação explicando apenas receitas de bolos.

Att.

Advertisements
Categories: E-mail