Serviço Postfix. Instalação e configuração do serviço Postfix. - PDF
Download "Serviço e-mail Postfix. Instalação e configuração do serviço e-mail Postfix."
Rafael Raminhos Vilaverde
1 Serviço Postfix agosto/2013 Instalação e configuração do serviço Postfix. 1 Histórico O correio eletrônico [ ] foi uma das primeiras aplicações práticas utilizadas no início da internet e, até hoje, é uma das mais utilizadas. Qualquer pessoa que possua um endereço eletrônico pode enviar e receber mensagens através da internet. O endereço conhecido como address ou endereço de correio eletrônico possui a estrutura básica ou onde user representa o identificador do usuário, host representa o nome do host e domain é o nome do domínio na internet. O funcionamento do correio eletrônico é baseado no paradigma "store-and-forward" (estocar e redirecionar), onde os usuários envolvidos na transferência de uma mensagem não interagem diretamente entre si, mas usam aplicações encarregadas de executar e gerenciar essa transferência. 2 Conceitos SMTP SMTP vem de Simple Mail Transfer Protocol, que é o protocolo usado na transferência de s. Os componentes principais de um sistema de correio eletrônico são: Mail User Agent (MUA) - aplicação que interage com o usuário, responsável pela obtenção de mensagens a serem transmitidas e também retirada de mensagens recebidas. São exemplos de MUA: Alpine 1, Evolution, Outlook, Eudora 2. Mail Transport Agent (MTA) - aplicação responsável pelo transporte de mensagens entre os pontos envolvidos, sejam elas na rede local ou através da internet. São exemplos de MTA: sendmail 3, postfix 4, qmail 5, exim. Mail Delivery Agent (MDA) aplicação responsável pelo recebimento do entregue pelo MTA local, deposita o na caixa postal do usuário. O MDA tem a função básica Serviço de Postfix 1/11
2 de filtrar o conteúdo da mensagem. São exemplos de MDA: procmail e aplicações de filtragem contra vírus e spam em geral. Mail Submission Agent (MSA) - aplicação com funcionalidade semelhante ao MTA, porém normalmente somente aceita transportar s na intranet [ s locais] e não de outros domínios [internet]. Na prática, MSA é mais conceito que produto. Mail Retrival Agent/Mail Access Agent (MRA/MAA) - aplicação usada pelo usuário para buscar seus s depositados na Mail Box. Em muitos casos, aparece embutido [transparente] no MUA. Mail Boxes - caixas postais [inbox] onde são armazenadas as mensagens recebidas. O e- mail é depositado pelo MDA. O princípio do funcionamento do correio eletrônico segue os seguintes passos: o remetente compõem a mensagem no seu aplicativo cliente de (agente de mensagens - MUA) e envia para o endereço eletrônico do destinatário. A mensagem é direcionada ao agente de transporte (MTA), cuja função é a entrega ou encaminhamento da mensagem à caixa postal correta do destinatário. Essa transferência é feita através do protocolo SMTP (Simple Mail Transfer Protocol). Na máquina destino, o MTA recebe a mensagem e a deixa na caixa postal correspondente do usuário. Server MTA smtp MUA Client Domínio A smtp Domínio B pop ou imap Server MTA MDA inbox MUA Client Numa situação básica, o processo de envio/recebimento de pode ter três protocolos envolvidos: i. o SMTP (Simple Mail Transfer Protocol), responsável pelo envio de mensagens entre dois serviços de , que envolve pelo menos uma caixa postal de usuário [destinatário]; ii. iii. o POP (Post Office Protocol) que gerencia o acesso às mensagens que chegaram à caixa postal do usuário de ; o IMAP (Internet Message Access Protocol), que também gerencia o acesso às mensagens que chegaram à caixa postal do usuário de . Serviço de Postfix 2/11
3 3 Conceitos pop, imap, relay, spam e webmail Existem três principais protocolos de estruturação de sistemas de POP (Post Office Protocol), DMSP (protocolo distribuído do sistema do correio) e IMAP (protocolo de acesso de mensagem de internet). Dos três, o POP é o mais antigo e consequentemente o mais conhecido. DMSP é limitado a uma única aplicação, PCMAIL, para sustentação da operação desconectada. O IMAP combina as potencialidades do POP e do DMSP, e fornece a melhor sustentação para todas as três modalidades do acesso remoto da caixa postal: offline, online e desconectado. Outra vantagem do IMAP é a possibilidade de criar pastas [diretórios] no servidor de para poder guardar mensagens já lidas, e com isso desocupar espaço da caixa de entrada [inbox], além de permitir uma melhor organização dessas mensagens. O RELAY é uma permissão que o serviço de concede ao usuário para poder enviar [forward] seus s através desse MTA. Usualmente numa intranet, todos os usuários estão autorizados a usarem o MTA local, mas não é permitido o RELAY para usuários externos. A razão dessa limitação no uso é que, se for concedido acesso irrestrito para envio de s, toda a internet irá pôr esse serviço MTA para transportar os s deles, e muito dos quais passarão a enviar extensas listas de não solicitados com propaganda, que é o conceito de spam. O Webmail permite a integração do servidor de com o servidor web, que é uma forma prática, simples, eficiente e segura de enviar/receber s. Nesse caso é o servidor web que invoca o serviço IMAP para acessar a caixa postal do usuário para ler , e é também o servidor web que faz relay no MTA para envio de mensagens. A porta TCP padrão do serviço POP é 110, do serviço IMAP é 143, e do SMTP é Instalação do serviço de Postfix Essa instalação também será standalone. Para descobrir se o servidor Postfix está instalado, procurar pelo seu script de inicialização em /etc/init.d: shell# ls /etc/init.d grep postfix /etc/init.d/postfix Se não houver saída no comando acima é indicativo de que o serviço postfix não está instalado. Nesse caso, instalar com o comando yum: Serviço de Postfix 3/11
4 shell# yum install postfix NOTA: Se fosse um Ubuntu, o comando seria "apt-get install postfix". E nessa instalação, seria necessário usar a tecla <TAB> para navegar entre os menus para personalizara a instalação. Para o nosso caso, é melhor manter o default do instalador, que é "Internet". Após instalado, verificar se existem os seguintes arquivos: shell# file /etc/init.d/postfix /etc/init.d/postfix: Bourne shell script text executable shell# file /usr/sbin/postfix /usr/sbin/postfix: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux , stripped shell# file /etc/postfix /etc/postfix: directory onde: /etc/init.d/postfix é o script de inicialização do serviço postfix; /usr/sbin/postfix é o executável que dará origem ao processo daemon; /etc/postfix é o diretório de configuração do serviço de postfix. 5 Configuração do serviço Primeiro vamos apenas olhar as configurações de instalação do serviço. Para isso, entrar no diretório /etc/postfix: shell# cd /etc/postfix shell# ls Existem dois arquivos de configuração, master.cf e main.cf. Vamos dar uma olhada no arquivo de configuração "main.cf" com o comando more: Serviço de Postfix 4/11
5 shell# more main.cf Nesse arquivo, uma configuração importante é inet_interfaces, que pelo padrão [default] de instalação está para inet_interfaces = localhost. Isso significa que esse MTA somente aceita relay da interface de rede local [localhost], e desse modo não atende a nenhum cliente pela rede. Vamos mudar essa configuração para "inet_interfaces = all" para passar a aceitar relay de de qualquer origem na rede. NOTA: Ao invés de all, o correto seria definir apenas a interface de rede pela qual os clientes acessam o serviço para o envio de . Ainda, se fosse um sistema Ubuntu o default de instalação estaria como "loopback-only", e também precisaria ser reconfigurado para all. Além disso, precisa também incluir o domínio aluno.br para poder enviar para Precisa também declarar a rede de onde o MTA aceita s, que no nosso caso é /24. Todas essas configurações são mostradas abaixo: === main.cf ===================================================== myorigin = aluno.br inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, aluno.br mynetworks = /24, /8 ============================================================== Em negrito estão as configurações que foram feitas no arquivo main.cf. 6 Inicialização e teste do serviço Para verificar se o daemon está rodando, usar o comando ps: shell# ps -ef grep postfix Se não houver saída no comando acima, indica que o processo não está rodando. Para iniciar, usar o script de inicialização: Serviço de Postfix 5/11
6 shell# /etc/init.d/postfix start Iniciando o postfix: [ OK ] Agora, o comando ps -ef grep postfix deverá mostrar que o serviço Postfix está rodando. Depois disso, o scan de portas com nmap vai mostrar que a porta 25 também está aberta: shell# nmap localhost Starting Nmap 4.76 ( ) at :38 BRST Interesting ports on localhost ( ): Not shown: 998 closed ports PORT STATE SERVICE 25/tcp open smtp 631/tcp open ipp Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds Nesse ponto, já pode ser testado o envio de para o serviço de em localhost. O será enviado para o usuário local aluno, com Ou seja, o usuário aluno em localhost vai enviar um para a caixa postal dele mesmo em localhost. Como já sabemos, um MTA é um dispositivo que transporta tráfego SMTP. Nesse processo, o cliente de envio MTA conecta no MTA que vai receber a mensagem, que assim é transportada de um MTA para o outro. No nosso caso, só temos um MTA, que é o que vai receber a mensagem, então precisamos também de um agente que conecte nesse MTA para enviar a mensagem. A função de agente de envio pode ser feita usando o comando telnet, para conectar na porta 25 em localhost e enviar a mensagem: Serviço de Postfix 6/11
7 shell# telnet localhost 25 Trying Connected to localhost. Escape character is '^]'. 220 localhost ESMTP Postfix helo Postfix 250 localhost Mail from: Sender ok Rcpt to: Recipient ok data 354 Enter mail, end with "." on a line by itself Subject: teste Apenas um teste de envio de q7qhcapv Message accepted for delivery quit Bye Connection closed by foreign host. Repare que a aplicação cliente telnet conectou na porta 25, que é onde está o serviço de e- mail. Na cor azul aparecem as respostas do MTA Postfix em localhost. Uma vez conectado, tem que especificar quem é o destinatário [Rcpt to: quem está enviando o [Mail from: e, só depois disso, usar a palavra data para iniciar o conteúdo da mensagem. Para finalizar a mensagem, digitar um ponto. numa linha nova, dar <enter> e depois escrever quit. Essa mensagem foi para a caixa postal [INBOX] do usuário aluno, em /var/spool/mail/aluno. Para visualizar o conteúdo da mensagem recebida, basta usar o comando tail: shell# tail /var/spool/mail/aluno From Sun Aug 26 14:14: Return-Path: Received: from localhost [ ] by localhost (8.14.5/8.14.5) with SMTP id q7qhcapv for Sun, 26 Aug :13: Subject: teste Message-Id: Date: Sun, 26 Aug :12: From: Apenas um teste de envio de . Serviço de Postfix 7/11
8 O arquivo de log do serviço de , /var/log/maillog, vai acusar que a mensagem foi enviada. Para visualizar esse log usar o comando tail: shell# tail /var/log/maillog Aug 26 14:14: postfix[4001]: q7qhcapv004001: size=32, class=0, nrcpts=1, proto=smtp, daemon=mta, relay=localhost [ ] Aug 26 14:14: postfix[4015]: q7qhcapv004001: (1000/1000), delay=00:00:30, xdelay=00:00:00, mailer=local, pri=30313, dsn=2.0.0, stat=sent NOTA: Num Ubuntu, o arquivo de log é /var/log/mail.log. 7 Envio de de uma máquina para outra O teste agora consiste em enviar um de uma máquina para outra. neste exercício, no endereço IP está o MTA cliente, e no endereço está o MTA que vai receber a mensagem. Mas para haver transporte de mensagens de uma máquina para a outra, precisaria um registro MX no serviço de nomes, pois o endereço é do tipo ou Então, para esse envio, seria necessário primeiro configurar um serviço de nomes e declarar num registro MX que o host em hospeda o serviço de . Porém, isso daria algum trabalho adicional e tiraria o foco, que é apenas testar o envio de . Uma alternativa ao serviço de com registro MX é declarar no arquivo /etc/hosts das duas máquinas os seus respectivos nomes [hostnames] e endereços IP. Desse modo, mesmo sem serviço de nomes entre essas duas máquinas poderá ser usado nomes de hosts, pois os arquivos /etc/hosts traduzem esses nomes para endereços IP. Vamos agora declarar os hostnames e endereços IP dessas duas máquinas em seus respectivos arquivos /etc/hosts. O formato no arquivo /etc/hosts consiste de entradas para IPs e hostnames, desse modo basta declarar nesse arquivo o endereço IP e o hostname da máquina que hospeda o serviço MTA e também o hostname e endereço IP da máquina cliente. E para saber qual o nome do host, basta usar o comando hostname: shell# hostname Serviço host10 de Postfix 8/11
9 Na máquina cliente, no endereço , o comando hostname retorna que seu nome é host11. Então, nas máquinas e , precisa editar o arquivo /etc/hosts e incluir as duas seguintes linhas de configuração: ======== /etc/hosts ====================================== host host11 ======================================================= Após, na máquina , testar com o comando ping para verificar se a máquina que hospeda o serviço MTA responde pelo nome host10, e também se o cliente responde pelo nome host11: shell# ping host10 PING host10 ( ) 56(84) bytes of data. 64 bytes from host10 ( ): icmp_seq=1 ttl=58 time=11.5 ms 64 bytes from host10 ( ): icmp_seq=2 ttl=58 time=16.4 ms ^C shell# ping host11 PING host11 ( ) 56(84) bytes of data. 64 bytes from host11 ( ): icmp_seq=1 ttl=58 time=11.5 ms 64 bytes from host11 ( ): icmp_seq=2 ttl=58 time=16.4 ms ^C NOTA: Para cessar o ping, pressionar simultaneamente as teclas control <ctrl> e c [<ctrl>c]. Na máquina cliente, , também deve ser testado se host10 e host11 respondem ao ping: shell_cliente$ ping host10 PING host10 ( ) 56(84) bytes of data. 64 bytes from host10 ( ): icmp_seq=1 ttl=58 time=12.3 ms 64 bytes from host10 ( ): icmp_seq=2 ttl=58 time=15.7 ms ^C shell_cliente$ ping host11 PING host11 ( ) 56(84) bytes of data. 64 bytes from host11 ( ): icmp_seq=1 ttl=58 time=10.9 ms 64 bytes from host11 ( ): icmp_seq=2 ttl=58 time=16.1 ms ^C Serviço de Postfix 9/11
10 NOTA: Se não responder ao ping pelo hostname, ou a máquina está inacessível ou a entrada no /etc/hosts está errada. Conforme fizemos no exemplo anterior, para enviar o são será usada uma aplicação MUA, mas sim conectar direto na máquina que hospeda o serviço MTA com telnet na porta 25. A diferença é que agora esse acesso e envio do será feito pelo cliente host11 no IP O será enviado pelo usuário aluno em host11 para aluno no MTA em host10. No e- mail [Mail from:] é e no [Rcpt to:] também é shell_cliente$ telnet host10 25 Trying Connected to host10. Escape character is '^]'. 220 host10 ESMTP Postfix helo Postfix 250 host10 Mail from: Ok Rcpt to: Ok data 354 End data with <CR><LF>.<CR><LF> Subject: Outro teste Outro teste, agora o é enviado de para Ok: queued as 533F98C09BE quit Bye Connection closed by foreign host. Na cor azul aparecem as respostas do MTA Postfix em host10 [ ]. Essa mensagem foi enviada para a caixa postal [INBOX] do usuário aluno, em /var/spool/mail/aluno na máquina MTA [host10, ]. Nessa máquina, para visualizar o conteúdo da mensagem recebida, basta usar o comando tail: Serviço de Postfix 10/11
11 shell# tail /var/spool/mail/aluno From Sun Aug 26 23:00: Return-Path: X-Original-To: Delivered-To: Received: from host11 (host11 [ ]) by pinguim.localdomain (Postfix) with SMTP id 533F98C09BE for Sun, 26 Aug :57: (BRT) Subject: Outro teste Outro teste, agora o é enviado de para E o arquivo de log /var/log/maillog na máquina que hospeda o serviço de [ ] vai acusar que a mensagem foi recebida. Para visualizar esse log, usar o comando tail: shell# tail /var/log/maillog Aug 26 22:59:39 pinguim postfix/smtpd[9277]: 533F98C09BE: client=host11[ ] Aug 26 23:00:27 pinguim postfix/cleanup[9294]: 533F98C09BE: message-id=<> Aug 26 23:00:27 pinguim postfix/qmgr[9059]: 533F98C09BE: size=269, nrcpt=1 (queue active) Aug 26 23:00:27 pinguim postfix/local[9304]: 533F98C09BE: relay=local, delay=148, delays=148/0.01/0/0.05, dsn=2.0.0, status=sent (delivered to mailbox) Aug 26 23:00:27 pinguim postfix/qmgr[9059]: 533F98C09BE: removed Aug 26 23:00:29 pinguim postfix/smtpd[9277]: disconnect from host11[ ] NOTA: Num Ubuntu, o arquivo de log é /var/log/mail.log. Serviço de Postfix 11/11
Serviço e-mail Postfix fevereiro/2017 Instalação e configuração do serviço de e-mail Postfix. 1 Histórico O correio eletrônico [e-mail] foi uma das primeiras aplicações práticas utilizadas no início da