20.5. Resolução de problemas

20.5.1. Porque eu tenho que usar o FQDN para hosts no meu site?
20.5.2. O sendmail diz mail loops back to myself
20.5.3. Como eu posso rodar um servidor de correio em um host com conexão discada?
20.5.4. Por que eu recebo o erro Relaying Denied quando envio mensagens a partir de outros hosts?

20.5.1. Porque eu tenho que usar o FQDN para hosts no meu site?

Você provavelmente encontrará que o host está em um domínio diferente; por exemplo se você tiver em foo.bar.edu e você deseja alcançar um host chamado mumble no domínio bar.edu, você terá que consultar-lhe pelo nome do domínio inteiro, mumble.bar.edu, em vez de somente mumble.

Tradicionalmente, isto foi permitido pelo resolvedores de nome do BSD. Entretanto a versão atual do BIND que vem com o FreeBSD não fornece mais abreviaturas para nomes de domínios não totalmente qualificados com excessão do domínio que você está dentro. Então o host mumble não qualificado deve ser encontrado como mumble.foo.bar.edu, ou irá ser procurado no domínio raiz.

Isto é diferente do comportamente anterior, onde a busca continuou através do mumble.bar.edu, e mumble.edu. Veja na RFC 1535 porque isso foi considerado uma má prática, ou mesmo um furo de segurança.

Como uma boa solução, você pode colocar a linha:

search foo.bar.edu bar.edu
em vez do precedente:
domain foo.bar.edu
no seu /etc/resolv.conf. No entando, certifique-se que a ordem de busca não vai além do limite entre a administração pública e local, como a RFC 1535 chama isto.

20.5.2. O sendmail diz mail loops back to myself

Esta questão é respondida no FAQ do sendmail como segue:

Eu estou tendo mensagens de erros de configuração local como:

553 relay.domain.net config error: mail loops back to myself
554 <user@domain.net>...  Local configuration error

Como eu resolvo este problema?

Você pediu que o correio do domínio (ex., domain.net) para ser
enviado para um host específico (neste caso, relay.domain.net)
usando um registro MX, mas a máquina de relay não se reconhece
como domain.net.  Adicione domain.net ao /etc/mail/local-host-names
(se você estiver usando FEATURE(use_cw_file)) ou adicione Cw domain.net
ao /etc/mail/sendmail.cf.

O FAQ do sendmail pode ser encontrado em http://www.sendmail.org/faq/ e é recomendado que você o leia caso queira fazer algum ajuste da configuração do seu correio.

20.5.3. Como eu posso rodar um servidor de correio em um host com conexão discada?

Você quer conectar uma máquina em uma LAN à internet. A máquina FreeBSD será o gateway de correio para a LAN. A conexão PPP não é dedicada.

Há pelo menos duas maneiras de fazer isso. Uma delas é usar o UUCP.

A outra maneira é contratar um servidor internet conectado o tempo todo para fornecer o serviço de MX secundário para seu domínio. Por exemplo, se o domínio da sua empresa é exemplo.com e seu provedor de serviços internet configurou exemplo.net para fornecer serviço de MX secundário para seu domínio:

exemplo.com.     MX    10      exemplo.com.
                      MX        20      exemplo.net.

Somente um host deve ser específico como recepiente final (adicione Cw example.com em /etc/mail/sendmail.cf no exemplo.com).

Quando o envio do sendmail está tentando entregar a mensagem ele irá tentar conectar pra você (exemplo.com) sobre o link do modem. Isto na maioria das vezes provavalmente irá dar tempo excedido porque você está conectado. O programa sendmail irá automaticamente entregá-lo ao site MX secundário, ex., seu provedor internet (exemplo.net). O site MX secundário irá periodicamente então tentar conectar ao seu host e entregar as mensagens ao host MX primário (exemplo.com).

Você pode querer usar algo assim para um script de login:

#!/bin/sh
# Me coloque em /usr/local/bin/pppmyisp
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppmyisp

Se você criar um script de login separado para um usuário você poderia usar o comando sendmail -qRexemplo.com preferivelmente no script acima. Isto irá forçar todas as mensagens em sua fila para exemplo.com serem processadas imediatamente.

Um refinamento adicional da situação segue abaixo:

Mensagem retirado da lista de discussão de provedores de acesso baseados em FreeBSD.

> Nós fornecemos a um cliente um MX secundário.  O cliente conecta ao
> nosso serviço diversas vezes ao dia automaticamente para puxar as mensagens
> do seu MX primário (Nós não chamamos o seu site quando uma mensagem para seu domínio
> chegou).  Nosso sendmail envia para a fila de mensagens a cada 30 minutos.  Neste
> momento ele tem que permanecer 30 minutos conectado para certificar-se que todas as mensagens
> estão indo para o MX primário.
>
> Há algum comando que inicie o sendmail para enviar todas as mensagens
> agora? É claro que o usuário não tem previlégios de root em nossa máquina.

Na seção privacy flags do sendmail.cf, há a
definição Opgoaway,restrictqrun

Retire o restrictqrun para permitir que usuários que não sejam root iniciem o processamento de fila.
Você pode querer também rearrumar os MXs.  Nós somos o 1o MX para nossos
clientes como estes, e nós definimos:

# Se nós formos o melhor MX para o host, tente uma vez diretamente gerar
# um erro de configuração local.
OwTrue

Essa maneira que o site remoto irá entregar diretamente pra você, sem ficar tentando
conexão com o cliente.  Você entao envia para seu cliente.  Somente funciona para
hosts, então você precisa obter o nome da máquina de correio do seu
cliente cliente.com assim como
hostname.cliente.com no DNS.  Soemnte coloque um registro A no
DNS para cliente.com.

20.5.4. Por que eu recebo o erro Relaying Denied quando envio mensagens a partir de outros hosts?

Na instalação padrão do sendmail FreeBSD, é configurado para somente enviar mensagem a partir de hosts em que o MTA está rodando. Por exemplo, se um servidor POP3 está instalado, então usuários estarão aptos a checar mensagens da escola, trabalho, ou outros locais remotos mas eles ainda não estão aptos a enviar mensagens a partir de outras localidades de fora. Tipicamente, em alguns momentos depois da tentativa, um email será enviado do MAILER-DAEMON com a mensagem de erro 5.7 Relaying Denied.

Há diversas maneiras para contornar isso. A solução mais direta é colocar o endereço do seu provedor de serviços internet no arquivo relay-domains em /etc/mail/relay-domains. Uma maneira rápida de fazer isso pode ser:

# echo "seu.provedor.exemplo.com" > /etc/mail/relay-domains

Depois de criar ou editar este arquivo você deve reiniciar o sendmail. isto funciona muito bem se você for um administrador de sistemas e não deseja enviar mensagens localmente, ou gostaria de usar um cliente gráfico em uma máquina ou para enviar mensagens atráves de um outro provedor de serviços internet. Isto também é muito útil se você tem somente uma ou duas contas de email configurada. Se houver um grande número de endereços a adicionar, você pode simplesmente abrir esse arquivo no seu editor de texto preferido, e então adicionar os domínios um por linha:

seu.provedor.exemplo.com
outro.provedor.exemplo.net
usarios-provedor.exemplo.org
www.exemplo.org

Agora toda mensagem enviada através do seu sistema, por qualquer um dos hosts nesta lista (desde que o usuário tenha uma conta em seu sistema) , será sucedida. Esta é uma maneira muito agradável de permitir aos usuários o envio de mensagens remotamente a partir de seu sistema sem permitir que outras pessoas enviem SPAM através do seu sistema.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.