Sendmail em FreeBSD

Autor: Julio Merino (aka Slink)
Data: 9 de fevereiro de 2002.


Sendmail é o programa de transporte de correio (MTA) mais usual em todos os sistemas *BSD e muitas distribuições Linux. É por isso que vou explicar-vos aqui como configurá-lo corretamente em FreeBSD, um processo bastante singelo devido às facilidades que nos proporciona este sistema operativo.

Estrutura da configuração

Os arquivos de configuração de Sendmail que nós modificaremos se situan no diretório /etc/mail. Estes arquivos se complementam de muitos outros incluídos dentro de usr //share/sendmail/cf, mas que não deveremos modificar nunca.

Sendmail se configura a partir de uns arquivos com uma sintáxis algo complexa: os que têm extensão .cf nesses diretórios Com as últimas versões deste MTA, o processo se simplifica em grande medida já que nós não deveremos tocar estes arquivos. Em seu lugar, editaremos os ficheros com extensão .mc que, uma vez processados, nos darão os anteriores.

Aliás, os arquivos .mc se formam a partir de macros que se expandem em seus correspondentes arquivos .cf, dando lugar a um arquivo de configuração realmente completo. O arquivo que realmente lerá Sendmail é o /etc/mail/sendmail.cf. Os outros arquivos com extensões parecidas no diretório de configuração não serão usados diretamente.

Criação de nosso .mc

Para criar nosso arquivo de configuração nos basearemos no que inclui FreeBSD por defeito. O mais recomendável é do que chamemos a nosso arquivo com o nome de nossa máquina, por se quisieramos manter vários diferentes. Procederemos a fazer o seguinte:

# cd /etc/mail
# cp freebsd.mc klamath.mc

O seguinte passo é indicar-lhe a FreeBSD qual é nosso arquivo de configuração para que possa automatizar alguns passos mais adiante. Para isso, editaremos nosso /etc/make.conf e adicionaremos o seguinte:

SENDMAIL_MC=/etc/mail/klamath.mc

Manejo do arquivo .mc

Antes de proceder à configuração em si é necessário comentar como converteremos nosso arquivo .mc em seu correspondente .cf e como indicaremos a Sendmail que o use. O primeiro passo óbvio é realizar a conversão pelo que faremos:

/etc/mail# make

Com isto, FreeBSD nos deixará um arquivo klamath.cf pronto para usar. Agora é necessário fazer que Sendmail o use, copiando-o sobre sendmail.cf. O processo podemos automatizarlo assim:

/etc/mail# make install

Por último, há que reiniciar o MTA. Nada mais fácil do que fazer:

/etc/mail# make restart

Retoques básicos

Não pretendo detalhar neste artigo todas as possíveis opções de Sendmail , ainda que se vou dar-vos um par de conselhos úteis. Para mais informação, ler-vos o /usr/share/sendmail/cf/README.

Smarthost

Muitos de nós dispomos de um servo de correio de saída por parte de nosso ISP. Se queremos usá-lo, em lugar de distribuir nós mesmos o correio, bastará com adicionar o seguinte a nosso arquivo de configuração (klamath.mc), substituyendo o nome do servo:

define(`SMART_HOST', `smtp.menta.net')

Procmail

Se temos o programa procmail instalado, podemos indicar-lhe a Sendmail que o use por defeito para distribuir o correio local. Para isso, usaremos o seguinte em nossa configuração:

FEATURE(local_procmail)

Genericstable

A última função que queria comentar-vos é o genericstable. Esta nos ajudará a reescribir o campo From: dos correios salientes para que seja válido. O mais habitual é do que quando enviemos correio local dito campo permaneza intacto, com o nome de servo de nossa máquina; isto facilita a resposta de correios locais.

Por outro lado, também quereremos que quando enviemos correio saliente a uma direção de internet fora de nossa máquina, o campo From: veja-se afetado e reescrito adequadamente para que a gente possa responder-nos a nossa direção de correio de internet (normalmente a de nosso ISP).

Para conseguir isto, adicionaremos o seguinte ao arquivo de configuração

FEATURE(masquerade_envelope)
FEATURE(genericstable, `hash -ou /etc/mail/genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')

E criaremos os dois arquivos aqui referidos. Começaremos pelo /etc/mail/genericsdomain, por ser o mais simples. Este arquivo indica que domínio é considerado local e ajudará ao MTA a distinguir entre correios locais e externos. Faremos o seguinte:

/etc/mail# hostname > genericsdomain

Uma vez feito isto, teremos que criar a tabela de conversões de direções Editaremos o /etc/mail/genericstable, e adicionaremos as direções de correio do seguinte modo:

# usuário local    direção de  internet
juli               [email protected]

Podemos adicionar tantas direções como queiramos e o comentário podeis tirá-lo se não vos gosta. É importante destacar que devemos converter este arquivo numa base de dados binária cada vez que o modifiquemos. Para isso faremos:

/etc/mail# makemap hash genericstable.db < genericstable

Uma vez reiniciado Sendmail todo deverá funcionar corretamente e poderemos enviar correio ¡até com o comando mail!.

Configuração de exemplo

Decidi incluir aqui o arquivo de configuração completo que uso eu em minha máquina para que vos hagáis uma idéia de como funciona todo. Cabe destacar que o ordem dos diferentes comandos é, em muitos casos, importante.

dnl
dnl Arquivo de  configuração para Sendmail
dnl

divert(0)
OSTYPE(bsd4.4)
DOMAIN(generic)

FEATURE(access_db, `hash -ou /etc/mail/access')
FEATURE(local_lmtp)
define(`PROCMAIL_MAILER_PATH', `/usr/local/bin/procmail')
FEATURE(local_procmail)
FEATURE(mailertable, `hash -ou /etc/mail/mailertable')
FEATURE(relay_based_on_MX)
FEATURE(virtusertable, `hash -ou /etc/mail/virtusertable')
FEATURE(masquerade_envelope)
FEATURE(genericstable, `hash -ou /etc/mail/genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')

define(`SMART_HOST', `smtp.menta.net')
define(`confCW_FILE', `-ou /etc/mail/local-host-names')
define(`confMAX_MIME_HEADER_LENGTH', `256/128')
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')

MAILER(local)
MAILER(smtp)

Para terminar

Espero que não vos tenha resultado demasiado complexo. Se todo vos funciona correctamete, tereis um dos MTAs mais potentes e completos sob vosso controle ;)


Se encontrais alguma incorreción, já sabeis, ¡comunicarmelo quanto antes!

Hosted by www.Geocities.ws

1