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>.