% host -t mx FreeBSD.org
FreeBSD.org mail is handled by 10 mx1.FreeBSD.org
Capítulo 28. Correio Eletrônico
Esta tradução pode estar desatualizada. Para ajudar com as traduções, acesse a ferramenta de traduções do FreeBSD.
Índice
28.1. Sinopse
O "Electronic Mail", mais conhecido como email, é uma das formas de comunicação mais utilizadas atualmente. Este capítulo fornece uma introdução básica à execução de um servidor de email no FreeBSD, bem como uma introdução ao envio e recebimento de email usando o FreeBSD. Para uma cobertura mais completa deste assunto, consulte os livros listados em Bibliografia.
Depois de ler este capítulo, você saberá:
Quais softwares estão envolvidos no envio e recebimento de mensagens de email.
Onde os arquivos básicos de configuração do Sendmail estão localizados no FreeBSD.
A diferença entre caixas de correio remotas e locais.
Como bloquear spammers de utilizar ilegalmente um servidor de email como relay.
Como instalar e configurar um Mail Transfer Agent, substituindo o Sendmail.
Como solucionar problemas comuns de servidor de email.
Como configurar o sistema para apenas enviar email.
Como usar email com uma conexão discada.
Como configurar a autenticação SMTP para segurança adicional.
Como instalar e usar um Mail User Agent, como o mutt, para enviar e receber email.
Como baixar emails de um servidor remoto utilizando POP ou IMAP.
Como aplicar automaticamente filtros e regras ao email recebido.
Antes de ler este capítulo, você deve:
Configurar corretamente uma conexão de rede (Rede Avançada).
Configure corretamente as informações de DNS para um host de email (Servidores de Rede).
Saber como instalar software adicional de terceiros (Instalando Aplicativos. Pacotes e Ports).
28.2. Componentes de Email
Há cinco partes principais envolvidas em uma troca de email: o Mail User Agent (MUA), o Mail Transfer Agent (MTA), um host de email, uma caixa de correio remota ou local e DNS. Esta seção fornece uma visão geral desses componentes.
- Mail User Agent (MUA)
O Mail User Agent (MUA) é um aplicativo que é usado para redigir, enviar e receber emails. Este aplicativo pode ser um programa de linha de comando, como o utilitário
mail
interno ou um aplicativo de terceiros da Coleção de Ports, como mutt, alpine ou elm. Dezenas de programas gráficos também estão disponíveis na Coleção de Ports, incluindo o Claws Mail, Evolution e Thunderbird. Algumas organizações fornecem um programa web de email que pode ser acessado por meio de um navegador. Mais informações sobre como instalar e usar um MUA no FreeBSD podem ser encontradas em Mail User Agents.- Mail Transfer Agent (MTA)
O Mail Transfer Agent (MTA) é responsável por receber emails de entrada e entregar emails de saída. O FreeBSD vem com o Sendmail como o MTA padrão, mas também suporta vários outros daemons de servidor de email, incluindo Exim, Postfix e qmail. A configuração do Sendmail é descrita em Arquivos de Configuração do Sendmail. Se outro MTA estiver instalado usando a Coleção de Ports, consulte sua mensagem de pós-instalação para detalhes de configuração específicos do FreeBSD e o site do aplicativo para obter instruções de configuração mais completas.
- Servidor de Email e Caixas de Correio
O servidor de email é um servidor responsável por entregar e receber emails para um host ou uma rede. O servidor de email coleta todas as mensagens enviadas para o domínio e as armazena no mbox padrão ou no formato alternativo Maildir, dependendo da configuração. Uma vez que o email foi armazenado, ele pode ser lido localmente usando um MUA ou acessado e coletado remotamente usando protocolos como POP ou IMAP. Se o email for lido localmente, não é necessário instalar um servidor POP ou IMAP.
Para acessar as caixas de email remotamente, é necessário um servidor POP ou IMAP, pois esses protocolos permitem que os usuários se conectem a suas caixas de correio de locais remotos. O IMAP oferece várias vantagens sobre o POP. Isso inclui a capacidade de armazenar uma cópia de mensagens em um servidor remoto após o download e atualizações simultâneas. O IMAP pode ser útil em links de baixa velocidade, pois permite aos usuários buscar a estrutura das mensagens sem baixá-las. Ele também pode executar tarefas como pesquisas no servidor para minimizar a transferência de dados entre clientes e servidores.
Vários servidores POP e IMAP estão disponíveis na Coleção de Ports. Estes incluem o mail/qpopper, mail/imap-uw, mail/courier-imap e mail/dovecot2 .
Deve-se notar que o POP e o IMAP transmitem informações, incluindo nome de usuário e senha, em texto não criptografado. Para garantir a segurança na transmissão de informações entre esses protocolos, considere a utilização de túneis seguros com ssh(1) (Tunelamento SSH) ou utilize SSL (OpenSSL).
- Sistema de Nomes de Domínio (DNS)
O Sistema de Nomes de Domínio (DNS) e seu daemon
named
desempenham um grande papel na entrega de email. Para enviar emails de um site para outro, o MTA procurará o site remoto por DNS para determinar qual host receberá os emails para o destino. Esse processo também ocorre quando o email é enviado de um host remoto para o MTA.Além de mapear nomes de hosts para endereços de IP, o DNS é responsável por armazenar informações específicas da entrega de emails, conhecidas como Mail eXchanger MX. O registro MX especifica quais hosts receberão mensagens de um domínio em particular.
Para visualizar os registros MX de um domínio, especifique o tipo de registro. Consulte host(1), para mais detalhes sobre este comando:
Consulte Sistema de Nomes de Domínio (DNS) para mais informações sobre DNS e sua configuração.
28.3. Arquivos de Configuração do Sendmail
Sendmail é o MTA padrão instalado com o FreeBSD. Ele aceita emails de MUAs e os entrega ao host de email apropriado, conforme definido por sua configuração. O Sendmail também pode aceitar conexões de rede e enviar mensagens para caixas de correio locais ou para outro programa.
Os arquivos de configuração do Sendmail estão localizados em /etc/mail. Esta seção descreve esses arquivos em mais detalhes.
- /etc/mail/access
Este arquivo de acesso define quais hosts ou endereços de IP têm acesso ao servidor de email local e que tipo de acesso eles possuem. Os hosts listados como
OK
, que é a opção padrão, têm permissão para enviar emails para esse host, desde que o destino final do email seja a máquina local. Os hosts listados comoREJECT
são rejeitados para todas as conexões de email. Os hosts listados comoRELAY
têm permissão para enviar emails para qualquer destino usando este servidor de email. Os hosts listados comoERROR
terão seus emails retornados com o erro de email especificado. Se um host estiver listado comoSKIP
, o Sendmail interromperá a pesquisa atual por esta entrada sem aceitar ou rejeitar o email. Os hosts listados comoQUARANTINE
terão suas mensagens retidas e receberão o texto especificado como o motivo da retenção.Exemplos de uso destas opções para endereços IPv4 e IPv6 podem ser encontrados na configuração de exemplo do FreeBSD, /etc/mail/access.sample:
# $FreeBSD: head/pt_BR.ISO8859-1/books/handbook/book.xml 53984 2020-03-15 16:03:31Z dbaio $ # # Mail relay access control list. Default is to reject mail unless the # destination is local, or listed in /etc/mail/local-host-names # ## Examples (commented out for safety) #From:cyberspammer.com ERROR:"550 We don't accept mail from spammers" #From:okay.cyberspammer.com OK #Connect:sendmail.org RELAY #To:sendmail.org RELAY #Connect:128.32 RELAY #Connect:128.32.2 SKIP #Connect:IPv6:1:2:3:4:5:6:7 RELAY #Connect:suspicious.example.com QUARANTINE:Mail from suspicious host #Connect:[127.0.0.3] OK #Connect:[IPv6:1:2:3:4:5:6:7:8] OK
Para configurar o arquivo de acesso, use o formato mostrado no exemplo para adicionar entradas em /etc/mail/access, mas não coloque um símbolo de comentário (
#
) na frente das entradas. Crie uma entrada para cada host ou rede cujo acesso deve ser configurado. Os remetentes de email que correspondem ao lado esquerdo da tabela são afetados pela ação no lado direito da tabela.Sempre que este arquivo for atualizado, atualize seu banco de dados e reinicie o Sendmail:
# makemap hash /etc/mail/access < /etc/mail/access # service sendmail restart
- /etc/mail/aliases
Este arquivo aliases contém uma lista de caixas de correio virtuais que são expandidas para usuários, arquivos, programas ou outros aliases. Aqui estão algumas entradas para ilustrar o formato do arquivo:
root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail"
O nome da caixa de correio no lado esquerdo dos dois pontos é expandido para o(s) alvo(s) à direita. A primeira entrada expande a caixa de correio
root
para a caixa de correiolocaluser
, que é então pesquisada no /etc/mail/aliases. Se nenhuma correspondência for encontrada, a mensagem será entregue paralocaluser
. A segunda entrada mostra uma lista de email. Um email paraftp-bugs
é expandido para as três caixas de correio locaisjoe
,eric
epaul
. Uma caixa de correio remota pode ser especificada como user@example.com. A terceira entrada mostra como escrever mensagens em um arquivo, neste caso, /dev/null. A última entrada demonstra como enviar email para um programa, /usr/local/bin/procmail, através de um pipe UNIX™. Consulte aliases(5) para obter mais informações sobre o formato desse arquivo.Sempre que este arquivo for atualizado, execute
newaliases
para atualizar e inicializar o banco de dados de aliases.- /etc/mail/sendmail.cf
Este é o arquivo de configuração principal do Sendmail. Ele controla o comportamento geral do Sendmail, incluindo tudo desde a tradução de endereços de email até a impressão de mensagens de rejeição para servidores de email remotos. Assim, este arquivo de configuração é bastante complexo. Felizmente, esse arquivo raramente precisa ser alterado para servidores de email padrão.
O arquivo de configuração master do Sendmail pode ser criado a partir de macros m4(1) que definem os recursos e o comportamento do Sendmail. Consulte /usr/src/contrib/sendmail/cf/README para mais detalhes.
Sempre que alterações nesse arquivo são feitas, o Sendmail precisa ser reiniciado para que as alterações entrem em vigor.
- /etc/mail/virtusertable
Esse arquivo mapeia endereços de email de domínios virtuais para caixas de correio usuários reais. Essas caixas de correio podem ser locais, remotas, aliases definidas em /etc/mail/aliases ou arquivos. Isso permite que vários domínios virtuais sejam hospedados em uma máquina.
O FreeBSD fornece um exemplo de arquivo de configuração em /etc/mail/virtusertable.sample para demonstrar ainda mais seu formato. O exemplo a seguir demonstra como criar entradas personalizadas usando esse formato:
root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe
Este arquivo é processado pela primeira entrada que for correspondida. Quando um endereço de email corresponde ao endereço à esquerda, ele é mapeado para a caixa de correio local listada à direita. O formato da primeira entrada neste exemplo mapeia um endereço de email específico para uma caixa de correio local, enquanto o formato da segunda entrada mapeia um endereço de email específico para uma caixa de correio remota. Por fim, qualquer endereço de email de
example.com
que não correspondeu a nenhuma das entradas anteriores corresponderá ao último mapeamento e será enviado para a caixa de correio localjoe
. Ao criar entradas personalizadas, use este formato e adicione-as ao /etc/mail/virtusertable. Sempre que este arquivo for editado, atualize seu banco de dados e reinicie o Sendmail:# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable # service sendmail restart
- /etc/mail/relay-domains
Em uma instalação padrão do FreeBSD, o Sendmail é configurado para enviar apenas mensagens provenientes do host em que está sendo executado. Por exemplo, se um servidor POP estiver disponível, os usuários poderão verificar os emails de locais remotos, mas não poderão enviar emails de domínios externos. Normalmente, após alguns momentos da tentativa, um email será enviado de
MAILER-DAEMON
com uma mensagem5.7 Relaying Denied
.A solução mais simples é adicionar o FQDN do ISP ao /etc/mail/relay-domains. Se vários endereços forem necessários, adicione-os um por linha:
your.isp.example.com other.isp.example.net users-isp.example.org www.example.org
Depois de criar ou editar este arquivo, reinicie o Sendmail com
service sendmail restart
.Agora, qualquer mensagem enviada pelo sistema por qualquer domínio dessa lista, desde que o usuário tenha uma conta no sistema, será aceita. Isso permite que os usuários enviem emails de domínios remotos do sistema sem precisar liberar acesso externo ao sistema, evitando SPAM da Internet.
28.4. Alterando o Mail Transfer Agent
O FreeBSD vem com o Sendmail já instalado como MTA, que é responsável pelos emails enviados e recebidos. No entanto, o administrador do sistema pode alterar o MTA do sistema. Uma ampla lista de alternativas de MTAs está disponível na categoria mail
da Coleção de Ports do FreeBSD.
Uma vez que um novo MTA esteja instalado, configure e teste o novo software antes de substituir o Sendmail. Consulte a documentação do novo MTA para obter informações sobre como configurar o software.
Uma vez que o novo MTA estiver funcionando, use as instruções nesta seção para desativar o Sendmail e configurar o FreeBSD para usar o MTA substituto.
28.4.1. Desativar o Sendmail
Se o serviço de email de saída do Sendmail estiver desabilitado, é importante que ele seja substituído por um sistema de entrega de email alternativo. Caso contrário, as funções do sistema, como periodic(8), não poderão entregar seus resultados por email. Muitas partes do sistema esperam um MTA funcional. Se os aplicativos continuarem a usar os binários do Sendmail para tentar enviar emails depois que eles forem desativados, o email poderá entrar em uma fila inativa do Sendmail e nunca será entregue. |
Para desabilitar completamente o Sendmail, adicione ou edite as seguintes linhas no /etc/rc.conf:
sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO"
Para desabilitar somente o serviço de email de entrada do Sendmail, use apenas esta entrada no /etc/rc.conf:
sendmail_enable="NO"
Mais informações sobre as opções de inicialização do Sendmail estão disponíveis em rc.sendmail(8).
28.4.2. Substitua o MTA Padrão
Quando um novo MTA é instalado usando a Coleção de Ports, seu script de inicialização também é instalado e as instruções de inicialização são mencionadas em sua mensagem de pacote. Antes de iniciar o novo MTA, pare os processos do Sendmail em execução. Este exemplo interrompe todos esses serviços e em seguida, inicia o serviço Postfix:
# service sendmail stop
# service postfix start
Para configurar a substituição MTA na inicialização do sistema, adicione sua linha de configuração ao /etc/rc.conf. Esta entrada habilita o MTA Postfix:
postfix_enable="YES"
Algumas configurações adicionais são necessárias, pois o Sendmail é tão onipresente que alguns softwares assumem que ele já está instalado e configurado. Verifique o /etc/periodic.conf e certifique-se de que esses valores estejam configurados como NO
. Se este arquivo não existir, crie-o com estas entradas:
daily_clean_hoststat_enable="NO" daily_status_mail_rejects_enable="NO" daily_status_include_submit_mailq="NO" daily_submit_queuerun="NO"
Alguns MTAs alternativos fornecem suas próprias implementações compatíveis de linha de comando do Sendmail para facilitar o uso delas como substitutos para o Sendmail. No entanto, alguns MUAs podem tentar executar binários padrão do Sendmail em vez dos binários do novo MTA. O FreeBSD usa o /etc/mail/mailer.conf para mapear os binários esperados do Sendmail para o local dos novos binários. Mais informações sobre esse mapeamento podem ser encontradas em mailwrapper(8).
O /etc/mail/mailer.conf padrão se parece com isto:
# $FreeBSD: head/pt_BR.ISO8859-1/books/handbook/book.xml 53984 2020-03-15 16:03:31Z dbaio $ # # Execute the "real" sendmail program, named /usr/libexec/sendmail/sendmail # sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail
Quando qualquer um dos comandos listados à esquerda é executado, o sistema na verdade executa o comando associado mostrado à direita. Esse sistema facilita a alteração de quais binários são executados quando esses binários padrões são chamados.
Alguns MTAs, quando instalados usando a Coleção de Ports, solicitarão a atualização deste arquivo para os novos binários. Por exemplo, o Postfix atualizará o arquivo da seguinte forma:
# # Execute the Postfix sendmail program, named /usr/local/sbin/sendmail # sendmail /usr/local/sbin/sendmail send-mail /usr/local/sbin/sendmail mailq /usr/local/sbin/sendmail newaliases /usr/local/sbin/sendmail
Se a instalação do MTA não atualizar automaticamente o /etc/mail/mailer.conf, edite esse arquivo em um editor de texto para que ele aponte para os novos binários. Este exemplo aponta para os binários instalados pelo mail/ssmtp:
sendmail /usr/local/sbin/ssmtp send-mail /usr/local/sbin/ssmtp mailq /usr/local/sbin/ssmtp newaliases /usr/local/sbin/ssmtp hoststat /usr/bin/true purgestat /usr/bin/true
Depois que tudo estiver configurado, é recomendável reinicializar o sistema. A reinicialização oferece a oportunidade de garantir que o sistema esteja configurado corretamente para iniciar o novo MTA automaticamente no boot.
28.5. Solução de problemas
28.5.1. Por que preciso usar o FQDN para hosts no meu site?
O host pode, na verdade, estar em um domínio diferente. Por exemplo, para um host em foo.bar.edu
se conectar a um host chamado mumble
no domínio bar.edu
, faça a referência pelo Nome de Domínio Totalmente Qualificado (Fully-Qualified Domain Name) FQDN, mumble.bar.edu
, em vez de apenas mumble
.
Isso ocorre porque a versão do BIND que vem com o FreeBSD não fornece mais abreviações padrão para não-FQDNs que não sejam o domínio local. Um host não qualificado como mumble
deve ser encontrado como mumble.foo.bar.edu
, ou ele será procurado no domínio raiz.
Nas versões mais antigas do BIND, a pesquisa continuava em mumble.bar.edu
e mumble.edu
. A RFC 1535 detalha por que isso é considerado uma má prática ou até mesmo uma falha de segurança.
Como uma boa solução, coloque a linha:
search foo.bar.edu bar.edu
em vez do anterior:
domain foo.bar.edu
no /etc/resolv.conf. No entanto, certifique-se de que a ordem de pesquisa não ultrapasse o limite "entre administração local e pública", como a RFC 1535 a chama.
28.5.2. Como posso executar um servidor de email em um host PPP dial-up?
Conecte-se a um gateway de email FreeBSD na LAN. A conexão PPP não é dedicada.
Uma maneira de fazer isso é obter um servidor de Internet em tempo integral para fornecer serviços MX secundários para o domínio. Neste exemplo, o domínio é example.com
e o ISP configurou example.net
para fornecer o serviço de MX secundário para o domínio:
example.com. MX 10 example.com. MX 20 example.net.
Apenas um host deve ser especificado como o destinatário final. Para Sendmail, adicione Cw example.com
em /etc/mail/sendmail.cf em example.com
.
Quando o MTA de envio tentar entregar o email, ele tentará conectar ao sistema, example.com
, através do link PPP. Isso expirará se o destino estiver offline. O MTA irá entregá-lo automaticamente ao site MX secundário no Provedor de Serviços de Internet (ISP), example.net
. O site secundário de MX tentará conectar-se periodicamente ao host primário MX, example.com
.
Use algo assim como um script de login:
#!/bin/sh # Put me in /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp
Ao criar um script de login separado para usuários, use sendmail -qRexample.com
no script acima. Isso forçará todos os emails na fila para que example.com
sejam processados imediatamente.
Um refinamento adicional da situação pode ser visto neste exemplo na lista de discussão Lista de discussão de provedor de serviços de Internet do FreeBSD:
> we provide the secondary MX for a customer. The customer connects to > our services several times a day automatically to get the mails to > his primary MX (We do not call his site when a mail for his domains > arrived). Our sendmail sends the mailqueue every 30 minutes. At the > moment he has to stay 30 minutes online to be sure that all mail is > gone to the primary MX. > > Is there a command that would initiate sendmail to send all the mails > now? The user has not root-privileges on our machine of course. In the privacy flags section of sendmail.cf, there is a definition Opgoaway,restrictqrun Remove restrictqrun to allow non-root users to start the queue processing. You might also like to rearrange the MXs. We are the 1st MX for our customers like this, and we have defined: # If we are the best MX for a host, try directly instead of generating # local config error. OwTrue That way a remote site will deliver straight to you, without trying the customer connection. You then send to your customer. Only works for hosts, so you need to get your customer to name their mail machine customer.com as well as hostname.customer.com in the DNS. Just put an A record in the DNS for customer.com.
28.6. Tópicos Avançados
Esta seção aborda tópicos mais envolvidos, como configuração de email e configuração de email para um domínio inteiro.
28.6.1. Configuração básica
Fora da caixa, pode-se enviar email para hosts externos desde que /etc/resolv.conf esteja configurado ou a rede tenha acesso a um servidor DNS. Para ter um email entregue ao MTA em um host FreeBSD, siga um destes procedimentos:
Execute um servidor DNS para o domínio.
Tenha o email entregue diretamente para o FQDN para a máquina.
Para que o email seja entregue diretamente a um host, ele deve ter um endereço IP estático permanente, não um endereço IP dinâmico. Se o sistema estiver protegido por um firewall, ele deverá ser configurado para permitir o tráfego SMTP. Para receber mensagens diretamente em um host, um desses dois deve ser configurado:
Certifique-se de que o registro MX de menor numeração no DNS aponte para o endereço IP estático do host.
Certifique-se de que não exista nenhuma entrada MX no DNS para o host.
Qualquer um dos itens acima permitirá que o correio seja recebido diretamente no host.
Tente isto:
# hostname
example.FreeBSD.org
# host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XX
Neste exemplo, as mensagens enviadas diretamente para yourlogin@exemplo.FreeBSD.org devem funcionar sem problemas, supondo que o Sendmail esteja sendo executado corretamente em example.FreeBSD.org
.
Para este exemplo:
# host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XX
example.FreeBSD.org mail is handled (pri=10) by nevdull.FreeBSD.org
Todas as mensagens enviadas para exemple.FreeBSD.org
serão coletadas no hub
sob o mesmo nome de usuário, em vez de serem enviadas diretamente para o seu host.
As informações acima são tratadas pelo servidor DNS. O registro DNS que possui as informações de roteamento de email é a entrada MX. Se não existir nenhum registro MX, os emails serão entregues diretamente ao host por meio de seu endereço IP.
A entrada MX de freefall.FreeBSD.org
uma vez foi assim:
freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com
freefall
teve muitas entradas MX. O menor número MX é o host que recebe email diretamente, se disponível. Se não for acessível por algum motivo, o próximo host de número mais baixo aceitará as mensagens temporariamente e as transmitirá quando um host de número inferior for disponibilizado.
Sites alternativos de MX devem ter conexões de Internet separadas para serem mais úteis. Seu ISP pode fornecer este serviço.
28.6.2. Email para um Domínio
Ao configurar um MTA para uma rede, qualquer mensagem enviada para hosts em seu domínio deve ser desviada para o MTA para que os usuários possam receber seus emails no servidor de email principal.
Para tornar a vida mais fácil, uma conta de usuário com o mesmo username deve existir tanto no MTA como no sistema com o MUA. Use adduser(8) para criar as contas de usuário.
O MTA deve ser o servidor de mensagens designado para cada estação de trabalho na rede. Isso é feito na configuração DNS com um registro MX:
example.FreeBSD.org A 204.216.27.XX ; Workstation MX 10 nevdull.FreeBSD.org ; Mailhost
Isso redirecionará o email para a estação de trabalho para o MTA, não importa onde o registro A aponta. O email é enviado para o host MX.
Isso deve ser configurado em um servidor DNS. Se a rede não executar seu próprio servidor DNS, fale com o ISP ou provedor DNS.
A seguir, um exemplo de hospedagem de email virtual. Considere um cliente com o domínio customer1.org
, onde todas as mensagens para customer1.org
devem ser enviadas para mail.myhost.com
. A entrada DNS deve ficar assim:
customer1.org MX 10 mail.myhost.com
Um registro A
> não é necessário em customer1.org
para que seja enviado emails para esse domínio. No entanto, um ping
em customer1.org
não funcionará, a menos que exista um registro A
para ele.
Diga ao MTA quais domínios e/ou nomes de host que ele deve aceitar emails. Qualquer um dos itens a seguir funcionará para o Sendmail:
Adicione os hosts ao /etc/mail/local-host-names ao usar
FEATURE (use_cw_file)
.Adicione uma linha
Cwyour.host.com
em /etc/sendmail.cf.
28.7. Configurando Apenas Envio
Há muitos casos em que muitas instâncias podem querer enviar email através de um relay. Alguns exemplos são:
O computador é uma máquina desktop que precisa usar programas como mail(1), usando o relay de email do ISP.
O computador é um servidor que não manipula emails localmente, mas precisa passar todos os emails para um relay para processamento.
Embora qualquer MTA seja capaz de preencher esse nicho específico, pode ser difícil configurar adequadamente um MTA com todos os recursos apenas para lidar com o descarregamento de email. Programas como Sendmail e Postfix são um exagero para esse uso.
Além disso, um acordo típico de serviço de acesso à Internet pode proibir a execução de um "servidor de email".
A maneira mais fácil de atender a essas necessidades é instalar o port mail/ssmtp:
# cd /usr/ports/mail/ssmtp
# make install replace clean
Uma vez instalado, o mail/ssmtp pode ser configurado em /usr/local/etc/ssmtp/ssmtp.conf:
root=yourrealemail@example.com mailhub=mail.example.com rewriteDomain=example.com hostname=_HOSTNAME_
Use o endereço de email real para root
. Insira a retransmissão de mensagens de saída do ISP no lugar de mail.example.com
. Alguns ISPs chamam isso de "servidor de email de saída" ou "servidor SMTP".
Certifique-se de desativar o Sendmail, incluindo o serviço de envio de mensagens. Veja Desativar o Sendmail para detalhes.
mail/ssmtp tem algumas outras opções disponíveis. Consulte os exemplos em /usr/local/etc/ssmtp ou na página de manual do ssmtp para obter mais informações.
A configuração do ssmtp dessa maneira permite que qualquer software no computador que precise enviar mensagens funcione corretamente, sem violar a política de uso dos ISPs ou permitindo que o computador seja sequestrado para envio de spam.
28.8. Usando Email com uma Conexão Dialup
Ao usar um endereço IP estático, não é necessário ajustar a configuração padrão. Configure o nome do host para o nome da Internet designado e o Sendmail fará o resto.
Ao usar um endereço IP atribuído dinamicamente e uma conexão PPP de discagem à Internet, geralmente há uma caixa de correio no servidor de email do ISP. Neste exemplo, o domínio do ISP é example.net
, o nome de usuário é user
, o nome do host é bsd.home
, e o ISP permitiu relay.example.net
como um relay de email.
Para baixar emails da caixa de correio do ISP, instale um agente pela coleção de ports. O mail/fetchmail é uma boa escolha, pois suporta muitos protocolos diferentes. Normalmente, o ISP fornecerá POP. Ao usar o usuário PPP, o email pode ser baixado automaticamente quando uma conexão com a Internet é estabelecida com a seguinte entrada em /etc/ppp/ppp.linkup:
MYADDR: !bg su user -c fetchmail
Ao usar o Sendmail para entregar emails em contas não locais, configure o Sendmail para processar a fila de mensagens assim que a conexão com a Internet for estabelecida. Para fazer isso, adicione esta linha após a entrada fetchmail
acima em /etc/ppp/ppp.linkup:
!bg su user -c "sendmail -q"
Neste exemplo, há uma conta para user
em bsd.home
. No diretório home de user
em bsd.home
, crie um .fetchmailrc que contenha esta linha :
poll example.net protocol pop3 fetchall pass MySecret
Este arquivo não deve ter permissão de leitura para ninguém, exceto pelo user
, pois contém a senha MySecret
.
Para enviar emails com o cabeçalho correto from:
, configure o Sendmail para usar user@example.net em vez de user@bsd.home e para enviar todos os emails através de relay.example.net
, permitindo uma transmissão de email mais rápida.
O seguinte .mc deve ser suficiente:
VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.example.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl
Consulte a seção anterior para obter detalhes sobre como converter esse arquivo no formato sendmail.cf. Não esqueça de reiniciar o Sendmail após atualizar o sendmail.cf.
28.9. Autenticação SMTP
Configurar a autenticação SMTP no MTA oferece vários benefícios. A autenticação SMTP adiciona uma camada de segurança ao Sendmail e fornece aos usuários móveis que alternam os hosts a capacidade de usar o mesmo MTA sem a necessidade de reconfigurar as configurações de seus clientes de email a cada vez.
Instale o security/cyrus-sasl2 da Coleção de Ports. Este port suporta várias opções de tempo de compilação. Para o método de autenticação SMTP demonstrado neste exemplo, certifique-se de que
LOGIN
não esteja desabilitado.Depois de instalar o security/cyrus-sasl2, edite o /usr/local/lib/sasl2/Sendmail.conf, ou crie-o se ele não existir, e adicione a seguinte linha :
pwcheck_method: saslauthd
Em seguida, instale o security/cyrus-sasl2-saslauthd e adicione a seguinte linha ao /etc/rc.conf:
saslauthd_enable="YES"
Finalmente, inicie o daemon saslauthd:
# service saslauthd start
Este daemon serve como um intermediário para o Sendmail autenticar no banco de dados do FreeBSD o passwd(5). Isso evita o trabalho de criar um novo conjunto de nomes de usuário e senhas para cada usuário que precise usar a autenticação SMTP e mantém a senha de login e email igual.
Em seguida, edite o /etc/make.conf e adicione as seguintes linhas:
SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDADD=/usr/local/lib/libsasl2.so
Essas linhas fornecem ao Sendmail as opções de configuração apropriadas para vincular ao cyrus-sasl2 em tempo de compilação. Certifique-se de que o cyrus-sasl2 tenha sido instalado antes de recompilar o Sendmail.
Recompile o Sendmail executando os seguintes comandos:
# cd /usr/src/lib/libsmutil # make cleandir && make obj && make # cd /usr/src/lib/libsm # make cleandir && make obj && make # cd /usr/src/usr.sbin/sendmail # make cleandir && make obj && make && make install
Esta compilação não deve ter nenhum problema se o /usr/src não foi alterado extensivamente e as bibliotecas compartilhadas necessárias estiverem disponíveis.
Depois que o Sendmail tenha sido compilado e reinstalado, edite o /etc/mail/freebsd.mc ou o arquivo local .mc. Muitos administradores optam por usar a saída de hostname(1) como o nome de .mc para exclusividade. Adicione estas linhas:
dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
Essas opções configuram os diferentes métodos disponíveis para que o Sendmail autentique usuários. Para usar um método diferente de pwcheck, consulte a documentação do Sendmail.
Finalmente, execute make(1) enquanto estiver em /etc/mail. Isso executará o novo .mc e criará um .cf chamado freebsd.cf ou o nome usado para o arquivo local .mc. Em seguida, execute
make install restart
, que copiará o arquivo para o sendmail.cf, e reinicie corretamente o Sendmail. Para mais informações sobre este processo, consulte /etc/mail/Makefile.
Para testar a configuração, use um MUA para enviar uma mensagem de teste. Para investigações posteriores, defina o LogLevel
do Sendmail como 13
e verifique o /var/log/maillog para quaisquer erros.
Para mais informações, consulte autenticação SMTP.
28.10. Mail User Agents
Um MUA é um aplicativo usado para enviar e receber emails. À medida que o email "evolui" e se torna mais complexo, os MUAs estão se tornando cada vez mais poderosos e fornecem aos usuários maior funcionalidade e flexibilidade. A categoria mail
da Coleção de Ports do FreeBSD contém numerosos MUAs. Eles incluem clientes de email gráficos como Evolution ou Balsa e clientes baseados em console, como mutt ou alpine.
28.10.1. mail
mail(1) é o MUA padrão instalado com o FreeBSD. É um MUA baseado em console que oferece a funcionalidade básica necessária para enviar e receber email em texto. Ele fornece suporte limitado a anexos e só pode acessar caixas de correio locais.
Embora o mail
não suporte nativamente a interação com os servidores POP ou IMAP, essas caixas de correio podem ser baixadas para um arquivo mbox local usando um aplicativo como fetchmail.
Para enviar e receber email, execute mail
:
% mail
O conteúdo da caixa de correio do usuário em /var/mail é lido automaticamente pelo mail
. Se a caixa de correio estiver vazia, o utilitário sairá com uma mensagem indicando que nenhum email foi encontrado. Se o email existir, a interface do aplicativo será iniciada e uma lista de mensagens será exibida. As mensagens são numeradas automaticamente, como pode ser visto no exemplo a seguir:
Mail version 8.1 6/6/93. Type ? for help.
"/var/mail/marcs": 3 messages 3 new
>N 1 root@localhost Mon Mar 8 14:05 14/510 "test"
N 2 root@localhost Mon Mar 8 14:05 14/509 "user account"
N 3 root@localhost Mon Mar 8 14:05 14/509 "sample"
Agora as mensagens podem ser lidas digitando t seguido pelo número da mensagem. Este exemplo lê o primeiro email:
& t 1
Message 1:
From root@localhost Mon Mar 8 14:05:52 2004
X-Original-To: marcs@localhost
Delivered-To: marcs@localhost
To: marcs@localhost
Subject: test
Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST)
From: root@localhost (Charlie Root)
This is a test message, please reply if you receive it.
Como visto neste exemplo, a mensagem será exibida com cabeçalhos completos. Para exibir novamente a lista de mensagens, pressione h.
Se o email exigir uma resposta, pressione as teclas R ou r no mail
. R instrui o mail
a responder apenas ao remetente do email, enquanto r responde a todos os outros destinatários da mensagem. Esses comandos podem ser sufixados com o número do email. Depois de digitar a resposta, o final da mensagem deve ser marcado por um único . em sua própria linha. Um exemplo pode ser visto abaixo:
& R 1
To: root@localhost
Subject: Re: test
Thank you, I did get your email.
.
EOT
Para enviar um novo email, pressione m, seguido pelo endereço de email do destinatário. Vários destinatários podem ser especificados separando cada endereço com o delimitador ,. O assunto da mensagem pode então ser inserido, seguido pelo conteúdo da mensagem. O final da mensagem deve ser especificado colocando um único . em sua própria linha.
& mail root@localhost
Subject: I mastered mail
Now I can send and receive email using mail ... :)
.
EOT
Enquanto estiver usando o mail
, pressione ? para exibir a ajuda a qualquer momento. Consulte mail(1) para obter mais detalhes sobre como usar o mail
.
O mail(1) não foi projetado para manipular anexos e, portanto, lida mal com eles. Novos MUAs lidam com anexos de uma maneira mais inteligente. Usuários que preferem usar |
28.10.2. mutt
O mutt é um poderoso MUA, com muitos recursos, incluindo:
A capacidade de enviar mensagens.
Suporte PGP para assinatura digital e criptografia de email.
Suporte MIME.
Suporte Maildir.
Altamente personalizável.
Consulte http://www.mutt.org para mais informações sobre o mutt.
O mutt pode ser instalado usando o port mail/mutt. Após o port ter sido instalado, o mutt pode ser iniciado com o seguinte comando:
% mutt
O mutt irá automaticamente ler o conteúdo da caixa de correio do usuário em /var/mail. Se nenhum email for encontrado, o mutt aguardará os comandos do usuário. O exemplo abaixo mostra o mutt exibindo uma lista de mensagens:
Para ler um email, selecione-o usando as teclas de cursor e pressione Enter. Um exemplo de email exibido pelo mutt pode ser visto abaixo:
Semelhante ao mail(1), o mutt pode ser usado para responder apenas ao remetente da mensagem, bem como para todos os destinatários. Para responder apenas ao remetente do email, pressione r. Para enviar uma resposta de grupo ao remetente original e a todos os destinatários da mensagem, pressione g.
Por padrão, o mutt usa o editor vi(1) para criar e responder emails. Cada usuário pode personalizar isso criando ou editando o .muttrc em seu diretório home e configurando a variável |
Para escrever uma nova mensagem de email, pressione m. Depois que um assunto válido foi dado, mutt iniciará o vi(1) para que o email possa ser escrito. Quando o conteúdo do email estiver completo, salve e saia do vi
. O mutt será retomado, exibindo uma tela de resumo do email que será enviado. Para enviar o email, pressione y. Um exemplo da tela de resumo pode ser visto abaixo:
O mutt contém manuais extensos que podem ser acessados pela maioria dos menus pressionando ?. A linha superior também exibe os atalhos de teclado, quando apropriado.
28.10.3. alpine
O alpine é destinado a um usuário iniciante, mas também inclui alguns recursos avançados.
O alpine teve várias vulnerabilidades remotas descobertas no passado, que permitiam que atacantes remotos executassem código arbitrário como usuários no sistema local, pela ação de enviar um email especialmente preparado. Enquanto problemas conhecidos foram corrigidos, o código alpine foi escrito em um estilo inseguro e o FreeBSD Security Officer acredita que provavelmente há outras vulnerabilidades não descobertas. Os usuários instalam o alpine por sua conta e risco. |
A versão atual do alpine pode ser instalada usando o port mail/alpine. Após a instalação do port, o alpine pode ser iniciado executando o seguinte comando:
% alpine
A primeira vez que o alpine é executado, ele exibe uma página de saudação com uma breve introdução, bem como uma solicitação da equipe de desenvolvimento do alpine para enviar uma mensagem de email anônima para que eles saibam quantos usuários estão usando o seu cliente. Para enviar esta mensagem anônima, pressione Enter. Como alternativa, pressione E para sair da saudação sem enviar uma mensagem anônima. Um exemplo da página de saudação é mostrado abaixo:
O menu principal é então apresentado, o qual pode ser navegado usando as teclas de cursor. Esse menu principal fornece atalhos para a composição de novos emails, navegação em diretórios de email e administração de entradas do catálogo de endereços. Abaixo do menu principal, são mostrados os atalhos de teclado relevantes para executar funções específicas da tarefa em questão.
O diretório padrão aberto pelo alpine é o inbox. Para visualizar o índice da mensagem, pressione I ou selecione a opção mostrada abaixo:
O índice de mensagens mostra mensagens no diretório atual e pode ser navegado usando as teclas de cursor. As mensagens destacadas podem ser lidas pressionando Enter.
Na captura de tela abaixo, uma mensagem de exemplo é exibida pelo alpine. Atalhos de teclado contextuais são exibidos na parte inferior da tela. Um exemplo de um atalho é r, que diz ao MUA para responder à mensagem atual sendo exibida.
A resposta de um email pelo alpine é feita usando o editor pico, que é instalado por padrão com o alpine. O pico facilita a navegação na mensagem e é mais fácil de ser usado por usuários iniciantes do que o vi(1) ou mail(1). Quando a resposta estiver completa, a mensagem pode ser enviada pressionando Ctrl+X. O alpine solicitará confirmação antes de enviar a mensagem.
O alpine pode ser personalizado usando a opção http://www.washington.edu/alpine/ para mais informações.
no menu principal. Consulte28.11. Usando o fetchmail
O fetchmail é um cliente IMAP e POP completo. Ele permite que os usuários baixem automaticamente emails de servidores IMAP e POP remotos e os salvem em caixas de correio locais, onde podem ser acessados mais facilmente. O fetchmail pode ser instalado usando o port mail/fetchmail e oferece vários recursos, incluindo:
Suporte para os protocolos POP3, o APOP, o KPOP, o IMAP, o ETRN e o ODMR.
Capacidade de encaminhar emails usando SMTP, que permite que a filtragem, o encaminhamento e aliases funcionem normalmente.
Pode ser executado no modo daemon para verificar periodicamente novas mensagens.
Pode buscar várias caixas de correio e encaminhá-las, com base na configuração, para diferentes usuários locais.
Esta seção explica alguns dos recursos básicos do fetchmail. Este utilitário requer uma configuração .fetchmailrc no diretório pessoal do usuário para que seja executado corretamente. Este arquivo inclui informações do servidor, bem como credenciais de login. Devido à natureza sensível do conteúdo deste arquivo, é aconselhável torná-lo legível apenas pelo usuário, com o seguinte comando:
% chmod 600 .fetchmailrc
O seguinte .fetchmailrc serve como um exemplo para fazer o download de uma única caixa de correio de usuário usando POP. Ele diz ao fetchmail para se conectar ao example.com
usando um nome de usuário joesoap
e uma senha de XXX
. Este exemplo pressupõe que o usuário joesoap
exista no sistema local.
poll example.com protocol pop3 username "joesoap" password "XXX"
O próximo exemplo conecta-se a vários servidores POP e IMAP e redireciona para diferentes nomes de usuários locais quando aplicável:
poll example.com proto pop3: user "joesoap", with password "XXX", is "jsoap" here; user "andrea", with password "XXXX"; poll example2.net proto imap: user "john", with password "XXXXX", is "myth" here;
fetchmail pode ser executado no modo daemon executando-o com -d
, seguido pelo intervalo (em segundos) que o fetchmail deve pesquisar servidores listados em .fetchmailrc. O exemplo a seguir configura o fetchmail para pesquisar a cada 600 segundos:
% fetchmail -d 600
Mais informações sobre o fetchmail podem ser encontradas em http://www.fetchmail.info/.
28.12. Usando o procmail
O procmail é um poderoso aplicativo usado para filtrar mensagens recebidas. Ele permite que os usuários definam "regras" que podem ser correspondidas aos emails recebidos para executar funções específicas ou para redirecionar o email para caixas de correio alternativas ou endereços de email. O procmail pode ser instalado usando o port mail/procmail. Uma vez instalado, ele pode ser diretamente integrado na maioria dos MTAs. Consulte a documentação do MTA para mais informações. Alternativamente, procmail pode ser integrado adicionando a seguinte linha a um .forward no diretório pessoal do usuário:
"|exec /usr/local/bin/procmail || exit 75"
A seção a seguir exibe algumas regras básicas do procmail, além de breves descrições do que elas fazem. As regras devem ser inseridas em um .procmailrc, que deve residir no diretório pessoal do usuário.
A maioria dessas regras pode ser encontrada em procmailex(5).
Para encaminhar todos os emails de user@example.com para um endereço externo de goodmail@example2.com:
:0 * ^From.*user@example.com ! goodmail@example2.com
Para encaminhar todos os emails com menos de 1000 bytes para um endereço externo de goodmail@example2.com:
:0 * < 1000 ! goodmail@example2.com
Para enviar todas as mensagens enviadas para alternate@example.com para uma caixa de correio chamada alternate:
:0 * ^TOalternate@example.com alternate
Para enviar todas as mensagens com um assunto de "Spam" para /dev/null:
:0 ^Subject:.*Spam /dev/null
Uma receita útil que analisa listas de discussão do FreeBSD.org
e coloca cada lista em sua própria caixa de correio:
:0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} }
Última alteração em: 9 de março de 2024 por Danilo G. Baio