unesp UNIVERSIDADE ESTADUAL PAULISTA Administração de Redes TCP/IP Correio Eletrônico sendmail Prof. Dr. Adriano Mauro Cansian [email protected] UNESP - IBILCE - São José do Rio Preto 2002 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto Correio Eletrônico sendmail 1 Prof. Dr. Adriano Mauro Cansian [email protected] UNESP - IBILCE - São José do Rio Preto “Os usuários possuem uma relação de amor e ódio com o e-mail. Eles amam usa-lo e odeiam quando ele não funciona.” 1. Introdução ao correio eletrônico e sendmail O sistema de e-mail é formado basicamente por duas entidades MUA e MTA • MUA - Mail User Agent MUAs são quaisquer dos programas utilizados para ler, compor, responder e dispor de mensagens eletrônicas. Exemplos: pine, mail, Mail, elm, Pegasus Mail, Eudora, etc... • MTA - Mail Transport Agent MTAs são programas que se encarregam de entregar mensagens a vários usuários e redirecionar mensagens entre computadores. Os programas MTAs mais conhecidos são o sendmail e o postfix. Este material trata o sendmail, por ser o mais utilizado. Entretanto, todos os conceitos são aplicáveis diretamente ao postfix2 e a outros programas. 1.1. As relações entre MUA e MTA • MUA MUA mais usado um programa que normalmente existe em todos os ambientes unix chama-se mail. Geralmente o mail é apenas para os iniciados devido à sua complexidade. É recomendável entretanto que todos os administradores de sistemas saibam como utilizar pelo menos suas funções básicas, devido à sua universalidade. O mail pode ser encontrado em praticamente todas as variantes de sistemas Unix. 1 Créditos - este material foi produzido a partir do livro texto adotado no curso: Hunt, Craig - TCP/IP Network Administratiom - O’Reilly & Associates, Inc. - 1.a Edição - Capítulo 10, pag. 213. 2 Postfix: http://www.postfix.org Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail -1 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto Existem outros programas tais como pine e elm que tornam o trabalho com o correio eletrônico extremamente simples para os usuários comuns. As opções, tanto de domínio público como comerciais são numerosas. Interfaces gráficas com suporte a MIME (Multipurpose Internet Mail Extensions) estão também popularizadas. É recomendável que todos os administradores estabeleçam e configurem um programa diferente do mail para o a utilização dos usuários do sistema. • MTA O programa sendmail (MTA) é necessário, porque a entrega de correio eletrônico em redes raramente é uma tarefa simples. Como a tarefa de transportar mensagens freqüentemente se estende além dos domínios da máquina local aumenta a necessidade de um MTA separado de um MUA. O programa sendmail pode enviar mensagens de uma máquina para outra na mesma rede, e pode também redirecionar mensagens da rede em que se encontra para redes de arquitetura radicalmente diferentes. Atenção: Lembre-se que não existem somente conexões de e-mail através da Internet ! Existem muitas outras redes, com arquiteturas diferentes, além de diferentes camadas de aplicação, que necessitam se comunicar adequadamente. O sendmail elimina a confusão causada pelos diversos programas de envio de e-mail. Isso é feito roteando-se a mensagem recebida do programa do usuário, com base no endereço eletrônico conhecido. Para as mensagens que saem: • • • • O sendmail recebe a mensagem vinda do programa do usuário, Interpreta o endereço eletrônico, Re-escreve o endereço das maneira apropriada para a entrega, e Roteia a mensagem através do método correto. Para as mensagens que chegam: • • • O sendmail interpreta o endereço, Envia para o programa de e-mail do usuário, Ou redireciona para outro endereço. Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail -2 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto Em adição ao roteamento entre programas de usuário e programas de entrega o MTA realiza mais duas funções: • Envia e recebe mensagens SMTP (Simple Mail Transporte Protocol), ou seja, mensagens Internet RFC-821. • Permite criação de “aliases” (sinônimos) de endereços. Figura 1 – Diagrama do envio de uma mensagem de um usuário de um sistema local, para outro remoto, seja numa mesma rede ou numa rede distante. Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail -3 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto 2. Sendmail como daemon sendmail escuta e atende requisições na porta TCP 25, processando as mensagens que chegam. O sendmail é inicializado no startup da máquina if [ -f /usr/lib/sendmail ] ; then (cd /usr/spool/mqueue; rm -l lf*) /usr/lib/sendmail -bd -q1h; echo -n ‘ sendmail is running...’ > /dev/console fi Discussão: cd /usr/spool/mqueue ; rm -l lf* remove os lock files eventualmente causados por uma parada do sistema (shutdown), quando os e-mails da fila ainda não tinham sido processados. Precisam ser eliminados para a fila ser re-processada. /usr/lib/sendmail -bd -q1h “ -q ” significa “queue” = fila. Esta instrução processa a fila a cada 1 hora (1h). Outras opções são possíveis, como por exemplo: -q30m para 30 minutos, ou -q15m para 15 minutos. Deve ser consultada a documentação específica para cada sistema, pois este comando pode variar de sistema para sistema. Não é recomendável ajustar este tempo muito curto em máquinas com filas grandes. Também não ajuste muito longo para máquinas principais. A opção -bd diz para o sendmail rodar como um daemon processo. Isto faz com que o sendmail fique escutando a porta 25 para processar as mensagens Internet que chegam. É preciso desta opção se você deseja processar mensagens que chegam. 3. Sendmail aliases “Aliases” são sinônimos de endereços de e-mail muito importantes para a máquina principal. São usados para: • • • Criar nomes “falsos” ou apelidos para contas de usuários verdadeiros. Redirecionar (forward) e-mail para outros hosts ou endereços. Criar listas de distribuição de mensagens para vários usuários ao mesmo tempo. Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail -4 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto Os aliases de sendmail são definidos no arquivo /etc/aliases1 (ou equivalente mapa NIS, se houver NIS rodando) e possuem o seguinte formato: alias: recipient [, recipient, ...] alias é o nome para onde o e-mail é endereçado (o endereço que ele chega). recipient é o nome verdadeiro para onde o e-mail deve ser entregue. O recipient pode ser um username válido, o nome de outro alias, ou um endereço de e-mail completo, contendo username e hostname. Vários recipients podem ser associados a um único alias forma-se uma lista de distribuição. Exemplo de um arquivo de aliases (máquina master.dcce.ibilce.unesp.br): # /etc/aliases # # esta maquina responde para [email protected] # ou para [email protected] # # Alias para o mailer daemon MAILER-DAEMON:root root: postmaster # # Aliases especiais postmaster: [email protected] webmaster: [email protected] abuse: [email protected] security: [email protected] # Aliases para manipular msgs com problemas e erros nobody: /dev/null dalton: /dev/null # Alias para processar o listserv listserv: "|/usr/local/master/server/catmail -r -f" # # Aliases para casos especiais de e-mail dcce.ibilce.unesp.br semac: semac@ ibilce.unesp.br adriano: [email protected] pos: [email protected], [email protected] dcce: olgamr, karinaf # # Aliases para grupos de usuarios (pseudo-listas # Adriano 20/11/96 disco-shadowcat: :include:/var/etc/shadowcat-lst.txt todos-dcce: :include:/etc/usr-dcce.txt # ----fim--- 1 Em alguns sistemas este arquivo de aliases pode ser /usr/lib/aliases Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail -5 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto IMPORTANTE - Na criação ou modificação dos aliases: O sendmail não processa o arquivo de aliases diretamente o arquivo deve ser processado antes com o comando “newaliases”. O newaliases cria uma base de dados dbm que é usada pelo sendmail. É preciso chamar o newaliases sempre que atualizar o arquivo de aliases para ter certeza que o sendmail terá a incorporação dos novos aliases. Outra forma de criar a base de dados executar newaliases é equivalente a executar sendmail -bi 4. Redirecionamento de mensagens pessoais Em adição ao redirecionamento fornecido pelo /etc/aliases sendmail permite definir endereços de redirecionamento (forward) pessoal. Usuário pode definir o redirecionamento desejado em seu arquivo .forward no seu home-dir pessoal. O sendmail verifica este arquivo após verificar os aliases do sistema, e antes de realizar a entrega final para o usuário. Se o .forward existe para o usuário, ele realiza a entrega conforme a configuração deste arquivo. A sintaxe é a mesma usada no /etc/aliases. ____________________________________________ Anotações: Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail -6 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto 5. Esquema geral de entrega de uma mensagem 1 Figura 2 - Esquema geral completo de distribuição de uma mensagem. Legenda: • • • • • Elipses amarelas são os programas ou módulos de programas que tratam as mensagens. Caixas amarelas são filas de arquivos ou mensagens. Caixa azul são tabelas de busca. Os programas dentro da caixa maior rodam sobre controle do processo MTA principal (sendmail ou postfix). Os dados dentro da caixa maior são de propriedade do MTA. 6. O arquivo de configuração do sendmail: sendmail.cf O arquivo de configuração do sendmail é o /etc/sendmail.cf2 Ele contém a quase totalidade da configuração do sendmail inclui as informações de roteamento de mensagens entre usuários e programas. O sendmail.cf tem as seguintes funções principais: • • • Define todo o ambiente do sendmail. Re-escreve endereços dentro da sintaxe apropriada para os sistemas de transporte. Mapeia endereços dentro das instruções necessárias para distribuir as mensagens. A configuração completa do arquivo sendmail.cf é bastante complexa. 1 2 Figura retirada de http://www.postfix.org/big-picture.html (18/09/2002). Autor indeterminado. Em alguns sistemas, o arquivo de configuração fica em /usr/lib/sendmail.cf Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail -7 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto Entretanto, atualmente, existem arquivos auxiliares que são usados quando da compilação do executável do sendmail e que, automagicamente, preparam o arquivo sendmail.cf sem grandes dificuldades. As informações completas e simplificadas para utilização e configuração do sendmail podem ser encontradas em http://www.sendmail.org/ EXEMPLO: A seguir é apresentado uma parte inicial de um arquivo de configuração /etc/sendmail.cf da máquina master.dcce.ibilce.unesp.br, que responde pelo domínio dcce.ibilce.unesp.br (para ver o arquivo completo, verifique /etc/sendmailcf de qualquer máquina UNIX). # # Copyright (c) 1983, 1995 Eric P. Allman # Copyright (c) 1988, 1993 ###################################################################### ###################################################################### ##### ##### SENDMAIL CONFIGURATION FILE ##### ##### built by root@mclaren on Tue Sep 23 13:28:28 GRNLNDST 1997 ##### in /export/home/master/polo/dworak/sendmail-8.8.7/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### ###################################################################### ##### @(#)cfhead.m4 8.9 (Berkeley) 1/18/97 ##### ##### @(#)cf.m4 8.24 (Berkeley) 8/16/95 ##### ##### @(#)generic-aix.mc 8.3 (Berkeley) 3/23/96 ##### ##### @(#)aix4.m4 8.1 (Berkeley) 11/13/96 ##### ##### @(#)generic.m4 8.3 (Berkeley) 3/24/96 ##### ##### @(#)redirect.m4 8.5 (Berkeley) 8/17/96 ##### ##### @(#)use_cw_file.m4 8.1 (Berkeley) 6/7/93 ##### ##### @(#)proto.m4 8.151 (Berkeley) 7/31/97 ##### # level 7 config file format V7/Berkeley ################## # local info # ################## # IMPORTANTE: DIRETIVA “Cw” # Esta configuração é uma das mais importantes. Aqui são criados os # “domínios virtuais” , ou seja, os nome de domínios para os quais este # sistema e/ou nome de hosts pelos quais este sendmail deve responder. # Note que não há espaço entre o “Cw” e o nome do host ou domínio. Cwlocalhost Cwdcce.ibilce.unesp.br Cwmaster.dcce.ibilce.unesp.br Cwmaster Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail -8 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto # file containing names of hosts for which we receive email # # Ao invés de usar a configuração da diretiva Cw acima, é possível Ter # um arquivo com todos os “domínios virtuais”. Útil quando a lista é # muito grande. Veja exemplo da configuração deste arquivo no final deste # material. Note que neste caso ele está “comentado” porque estas # definições estão feitas acima. #Fw/etc/sendmail.cw # my official domain name # ... define this only if sendmail cannot automatically determine your domain #Dj$w.Foo.COM CP. # "Smart" relay host (may be null) DS # place to which unknown users should be forwarded #Kuser user -m -a<> #DLname_of_luser_relay # operators that cannot be in local usernames (i.e., network indicators) CO @ % ! # a class with just dot (for identifying canonical names) C.. # a class with just a left bracket (for identifying domain literals) C[[ # Mailer table (overriding domains) #Kmailertable dbm /etc/mailertable # Domain table (adding domains) #Kdomaintable dbm /etc/domaintable # Generics table (mapping outgoing addresses) #Kgenerics dbm /etc/genericstable # Virtual user table (maps incoming users) #Kvirtuser dbm /etc/virtusertable # who I send unqualified names to (null means deliver locally) DR # who gets all local email traffic ($R has precedence for unqualified names) DH # dequoting map Kdequote dequote # class E: names that should be exposed as from this host, even if we masquerade # class L: names that should be delivered locally, even if we have a relay # class M: domains that should be converted to $M #CL root CE root Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail -9 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto # who I masquerade as (null for no masquerading) (see also $=M) # DIRETIVA “DM” # IMPORTANTE: aqui é feito a “máscara” do endereço. Esta diretiva “força” a saída do e-mail # como sendo proveniente do endereço que você desejar. É util para suprimir o nome do host do # nome de domínio, de forma que as mensagens sejam provenientes sempre de # [email protected] ao invés de [email protected] # DMdcce.ibilce.unesp.br # my name for error messages DnMAILER-DAEMON CPREDIRECT FR-o /etc/sendmail.cR # Configuration version number DZ8.8.7 ############### # Options # ############### # strip message body to 7 bits on input? O SevenBitInput=False # 8-bit data handling O EightBitMode=pass8 # wait for alias file rebuild (default units: minutes) O AliasWait=10 # location of alias file # local e nome do arquivo de aliases O AliasFile=/etc/aliases # minimum number of free blocks on filesystem O MinFreeBlocks=100 # maximum message size # Tamanho máximo da mensagem, em bytes O MaxMessageSize=100000 # substitution for space (blank) characters O BlankSub=. # avoid connecting to "expensive" mailers on initial submission? O HoldExpensive=False # checkpoint queue runs after every N successful deliveries #O CheckpointInterval=10 # default delivery mode # Modo de processamento da mensagem. Backgroud é default O DeliveryMode=background # automatically rebuild the alias database? #O AutoRebuildAliases # error message header/file #O ErrorHeader=/etc/sendmail.oE # error mode #O ErrorMode=print # save Unix-style "From_" lines at top of header? #O SaveFromLine # temporary file mode O TempFileMode=0600 # match recipients against GECOS field? #O MatchGECOS # maximum hop count #O MaxHopCount=17 # location of help file O HelpFile=/usr/lib/sendmail.hf Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail - 10 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto # ignore dots as terminators in incoming messages? #O IgnoreDots # name resolver options #O ResolverOptions=+AAONLY # deliver MIME-encapsulated error messages? O SendMimeErrors=True # Forward file search path O ForwardPath=$z/.forward.$w:$z/.forward # open connection cache size O ConnectionCacheSize=2 # open connection cache timeout O ConnectionCacheTimeout=5m # persistent host status directory #O HostStatusDirectory=.hoststat # single thread deliveries (requires HostStatusDirectory)? #O SingleThreadDelivery # use Errors-To: header? O UseErrorsTo=False [...o arquivo ainda continua - suprimido por economia de espaço...] Arquivo /etc/sendmail.cf nomes de domínios ou hosts “virtuais” para os quais o sendmail responde. # /etc/sendmail.cw – em master.dcce.ibilce.unesp.br # Máquina que responde por e-mails recebidos para dcce.ibilce.unesp.br master master.dcce.ibilce.unesp.br dcce.ibilce.unesp.br localhost Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail - 11 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto 7. Exercícios: 1. Verificar as seguintes man pages: % man aliases % man sendmail % man sendmail.cf % man newaliases % man .forward % man vacation 2. O que é a especificação de formato MIME para correio eletrônico ? Existe algum RFC que define o comando MIME ? 3. O sendmail sempre teve graves problemas de segurança associados a ele. Faça um levantamento dos problemas de segurança mais recentes relativos ao sendmail, realizando uma busca em http://www.cert.org/ e http://www.ciac.org/ . Pergunta-se: devido a problemas de segurança anteriormente relatados, qual a versão recomendada para o sendmail atualmente ? 4. Existem maneiras de se “assinar eletronicamente” uma mensagem de correio eletrônico? Como isso é feito ? Cite pelo menos 2 mecanismos mais usados atualmente. 5. Correio eletrônico é feito para transportar arquivos ASCII puros. Então explique como é possível enviar um arquivo binário (por exemplo uma imagem .GIF ou um arquivo .ZIP) anexada (attached) a uma mensagem de correio eletrônico. Qual a relação disso com MIME ? 6. O que é, e como funciona, o identd? 7. Como estabelecer domínios virtuais usando o sendmail? Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail - 12 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto Apêndice MAIL e SPAM1 Introdução Remeter correio eletrônico em demasia a um vasto número de pessoas com propaganda, correntes, esquema de ganhe dinheiro fácil ou fique rico de modo rápido e boatos, é abuso. A esta prática anti-ética, dá-se o nome de SPAM. 2 O termo SPAM vem de um tipo de presunto pastoso industrializado e comercializado nos Estados Unidos e que foi ridiculamente utilizado numa cena de um dos filmes da série Monty Pyton. A cena se passa num bar quando, comicamente, vikings sentam-se à mesa e ficam repetindo `SPAM! SPAM! SPAM!', sem parar, até se tornar insuportavelmente ridículo. Por analogia, seria a repetição de correio para diversos receptores. Diferentemente do mailbomb, o SPAM visa atingir um número enquanto que o primeiro visa de modo mais danoso prejudicar usuário ou todo espaço em disco do provedor enviando para repetidos em grande quantidade, muitas vezes acompanhado infectados por vírus. maior de usuários destinatários a caixa-postal de um específico uma ou mais pessoas correios de pornografia ou documentos O SPAM também ocorre em demasia na USENET, dificultando a leitura das mensagens e irritando os moderadores dos grupos por serem repetitivas e principalmente por não respeitarem o tópico a que se refere o grupo. Contudo, não é relevante no contexto brasileiro pois a USENET não é um serviço tão utilizado a nível nacional. A difusão ocorre em sua maioria no desejo inconseqüente de atingir um grande número de pessoas para propaganda comercial através de correio. Um modo barato para quem envia e caro para quem recebe. Em um ataque a AOL, nos EUA, a empresa CyberPromotions enviou 8 milhões de mensagens por dia aos usuários da America Online. Considerando que um usuário comum leva 10 segundos para identificar e descartar a mensagem foram gastas aproximadamente 5.000 horas por dia de tempo de conexão para remoção de SPAM apenas neste caso. Outra questão relevante é que o SPAM não dá opção de recebimento ao remetente. Simplesmente recebe-se tal lixo, contendo anúncios, na caixa postal pessoal. Muitos deles subscrevem aleatoriamente o usuário na lista de anúncio de determinado produto acompanhado de uma introdução do tipo: “Caso não tenha interesse de continuar na lista, favor remeter correio para ....” solicitando o cancelamento de sua inscrição. Considerando o tamanho e diversidade da rede com seu incontável número de listas de discussão, se houvesse, via de regra, assinatura sem autorização do usuário, em pouco tempo cada caixa-postal pessoal alcançaria o mínimo de 5 mil mensagens por dia, numa estimativa mais do que otimista. 1 Por Isamar Villas Boas Perrelli Maia <[email protected]>; parte integrante do material “Tópicos em Segurança de Redes”. Reproduzido sob permissão de Pedro A.M.Vazquez <[email protected]>. 2 Atualmente fabricado por Hormel Foods Co. - http://www.hormel.com/ (18/09/2002) Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail - 13 Tópicos em Sistemas de Computação UNESP – São José do Rio Preto Filtros Esta invasão de privacidade já está sendo combatida em toda a rede e, no Brasil, o número de casos vem aumentando sensivelmente nos últimos meses. Todo e qualquer provedor é passível de ser uma das vítimas diárias. Uma forma de tentar reduzir e evitar este tipo de prática é a aplicação do recurso de filtro. Bloquear o recebimento de correio eletrônico de determinados domínios e servidores coniventes com o SPAM e que não respondem de forma alguma a mensagens com reclamações e queixas das práticas indevidas de seus usuários. Filtros por Software Além dos filtros nos roteadores também pode-se utilizar software de transporte adaptado ao não recebimento de SPAM ou software filtro como o Procmail ( http://www.procmail.org ) que utiliza critérios flexíveis de palavra-chave ou limitação de quantidade recebida de uma só mensagem, auxiliando consideravelmente o bloqueio. Os softwares de transporte de correio eletrônicos regularmente utilizados já estão se adaptando a esta nova ameaça, como por exemplo o sendmail e o postfix em plataformas UNIX. Para os usuários de sendmail, algumas regras foram criadas para as versões recentes (a partir da versão 8.8.X). O postfix (disponível em http://www.postfix.org) é uma nova proposta. Seguro, confiável, eficiente e simples. Suporta as melhorias do sendmail, como domínios virtuais, host e user masquerading além de controle de relay, detecção e bloqueio de loops, gerenciamento nativo de listas de discussão, roteamento por domínio, UUCP, mailertable, pop3 nativo com toda a segurança hoje necessária para prevenção de mailbomb, backdoors e SPAM. Conclusões sobre Mail e Spam Em suma, judicialmente nos EUA, principalmente no estado de Nevada, existem ensaios de legislação em adaptações ao SPAM em sua versão por FAX. A Compuserve contra o SPAM provocado pela CyberPromotions é sempre enfocada em discussões do gênero. Recentemente, judicialmente foi estabelecido que a CyberPromotions pagaria 65 mil dólares de advogados e a Compuserve daria 30 mil em retorno em propaganda em seu Web Site. Urge, no Brasil, a conscientização dos usuários por parte dos provedores estabelecendo Políticas Aceitáveis de Utilização (AUP) e auxiliando vítimas desta constante e desprezível falta de ética. Referências sobre Mail e Spam • • • • • • http://www.antispam.org.br/ (18/09/2002) http://www.amavis.org http://www.sendmail.org http://www.qmail.org http://www.postfix.org http://www.mids.org/nospam (18/09/2002) Arquivo: 2002net-sendmail.pdf Prof. Adriano Mauro Cansian Administração de Redes TCP/IP Sendmail - 14