# Informações gerais sobre o DMARC.
# Informações sobre o projeto OpenDMARC.
# Antes de começar…
# Você está executando uma distribuição Linux compatível com RedHat (RHEL, CentOS, Fedora…).
# Um MTA com reconhecimento de domínio, como Postfix ou Sendmail totalmente funcional.
# Neste artigo será abordado apenas a configuração com Postfix.
# Instalando o OpenDMARC.
yum install opendmarc
# Edite os arquivos de configuração:
cp /etc/opendmarc.conf /etc/opendmarc.conf.default
vi /etc/opendmarc.conf
# Encontre a linha de nome:
# AuthservID , remova a # e substitua a palavra "name" por "HOSTNAME":
# Isto usará o nome do host do sistema atual no campo Authentication-Results: header após a verificação de uma mensagem.
# Se você preferir usar o nome de um host diferente, pode declarar isso explicitamente aqui.
# Para mais informações, consulte: http://tools.ietf.org/html/rfc7001 section-2.4.
# Edite sua configuração do MTA – Para informar sobre o OpenDMARC
vi /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:8893 non_smtpd_milters = $smtpd_milters milter_default_action = accept
# Se você possui outro domínio em seu sistema, execute também o OpenDKIM ).
# Adicione o soquete do milter OpenDMARC à linha smtpd_milters com uma vírgula, na ordem em que o Postfix processe cada milter.
smtpd_milters = inet:127.0.0.1:8891, inet:127.0.0.1:8893 non_smtpd_milters = $smtpd_milters milter_default_action = accept
# Essa configuração executará as mensagens recebidas pelo OpenDKIM primeiro e depois pelo OpenDMARC.
# Inicie o OpenDMARC e reinicie o seu MTA.
service opendmarc start
ou
systemctl start opendmarc #(nas versões mais atuais...).
# Depois de confirmar que o OpenDMARC foi iniciado, reinicie o seu MTA.
service postfix restart
# Usuários do systemd devem fazer:
systemctl restart postfix
# Habilitando inicio automatico no boot.
chkconfig opendmarc on
# Usuários do systemd devem fazer:
systemctl enable opendmarc
# Testando o OpenDMARC:
# Verificando as mensagens recebidas no registro de log em /var/log/maillog:
tail -f /var/log/maillog
# Quando o OpenDMARC iniciar (ou reiniciar), procure linhas como abaixo:
# Enviando uma mensagem de teste de uma conta de email externa,
# para um endereço no seu sistema.
Apr 26 03:12:21 centostpl opendmarc[4353]: E9339200C6: SPF(mailfrom): [email protected] pass
# Adicionando uma lista pública de sufixos:
# Esta é uma etapa opcional, recomendada. Fará com que o OpenDMARC permita
# que um registro SPF para um nome de domínio totalmente qualificado,
# como “bounce.linkedin.com” conte como válido se o domínio De: da mensagem
# for o domínio de nível superior (“linkedin.com” neste exemplo ). A configuração
# de uma lista pública de sufixos requer três etapas adicionais:
# Download de uma cópia local da lista pública de sufixos da Mozilla.
# Editando seu arquivo /etc/opendmarc.conf para ativar a opção PublicSuffixList.
# Agendar um download semanal da lista para mantê-la atualizada.
# Faça o download de uma cópia local da lista pública de sufixos da Mozilla
# Primeiro, baixe manualmente uma cópia da lista de Sufixo público da Mozilla
# para o diretório /etc/opendmarc com:
/usr/bin/wget --no-check-certificate -q -N -P \ /etc/opendmarc https://publicsuffix.org/list/effective_tld_names.dat chown opendmarc: opendmarc /etc/opendmarc/effective_tld_names.dat
# Edite /etc/opendmarc.conf
# Em seguida, descomente a opção PublicSuffixList no seu arquivo
# /etc/opendmarc.conf e adicione o local da sua cópia local:
PublicSuffixList /etc/opendmarc/effective_tld_names.dat
# Reinicie o OpenDMARC para pegar a alteração na configuração.
# Agende um download semanal para manter a lista atualizada.
echo "@weekly /usr/bin/wget --no-check-certificate -q -N -P /etc/opendmarc \ https://publicsuffix.org/list/effective_tld_names.dat #Get latest effective_tld_names for OpenDMARC" >> /etc/crontab
# Adicionando relatórios DMARC:
# Depois de ter certeza de que o OpenDMARC está sendo executado corretamente e de
# verificação de mensagens recebidas, você tem algumas opções adicionais para
# relatar falhas do DMARC aos proprietários do domínio (se por opção fazê-lo).
# As etapas a seguir permitem coletar dados específicos do DMARC e enviar relatórios.
# noturnos aos proprietários do domínio, informando-os sobre o status do DMARC das
# mensagens que afirmam pertencer ao domínio.
# A configuração do relatório DMARC requer três etapas adicionais:
# Editando seu arquivo /etc/opendmarc.conf para ativar um local do arquivo de histórico.
# Configurando um banco de dados MySQL para importar dados do arquivo de histórico.
# Escrever um script para importar os dados do arquivo de histórico do host, apagar
# o arquivo de histórico e enviar por e-mail os relatórios de acordo com o registro
# DMARC TXT dos domínios.
# Edite /etc/opendmarc.conf
# Descomente a seguinte linha no seu arquivo /etc/opendmarc.conf.
HistoryFile /var/run/opendmarc.dat
# Essa opção especifica um local de um arquivo de texto no qual os registros são gravados que podem ser usados para gerar relatórios agregados do DMARC. Certifique-se de reiniciar o OpenDMARC depois de fazer as alterações.
# Configure o banco de dados MySQL
# Criar um banco de dados MySQL que possa importar os dados do arquivo opendmarc.dat e permitir que os scripts incluídos no OpenDMARC enviem relatórios de falhas aos proprietários do domínio.
# mysql -p mysql -u root -p -e "CREATE DATABASE opendmarc"; mysql -u root -p -e "GRANT ALL PRIVILEGES ON opendmarc.* TO opendmarc IDENTIFIED BY 'secretpassword'"; mysql -u root -p -e "FLUSH PRIVILEGES";
Importe o sql padrão, fornecido pelo pacote OpenDMARC:
# mysql -h localhost -u opendmarc -p opendmarc < /usr/share/doc/opendmarc-(versão)/schema.mysql
Crie um script de processamento que seja executado diariamente, importe os dados do opendmarc.dat para o banco de dados, processe, envie os relatórios e apague o conteúdo do opendmarc.dat:
vi /etc/cron.daily/opendmarc-send-reports.sh
chmod 755 /etc/cron.daily/opendmarc-send-reports.sh
#!/bin/bash # Importar dados OpenDMARC's do arquivo opendmarc.dat e inserir em base local MySQL # enviar relatórios de falhas DMARC para os dominios. # Baseado no script de Hamzah Khan (http://blog.hamzahkhan.com/) set -e DBHOST='localhost' DBUSER='opendmarc' DBPASS='secretpassword' DBNAME='opendmarc' HISTDIR='/var/spool/opendmarc' HISTFILE='opendmarc' # Verifica se o arquivo de histórico existe touch ${HISTDIR}/${HISTFILE}.dat # Move o diretório temporário do arquivo de histórico para processamento mv ${HISTDIR}/${HISTFILE}.dat /tmp/${HISTFILE}.$$ # Importando historico e relatórios /usr/sbin/opendmarc-import -dbhost=${DBHOST} -dbuser=${DBUSER} -dbpasswd=${DBPASS} -dbname=${DBNAME} -verbose < /tmp/${HISTFILE}.$$ /usr/sbin/opendmarc-reports -dbhost=${DBHOST} -dbuser=${DBUSER} -dbpasswd=${DBPASS} -dbname=${DBNAME} -verbose -interval=86400 -report-email '[email protected]' -report-org 'CheatCodes.com' /usr/sbin/opendmarc-expire -dbhost=${DBHOST} -dbuser=${DBUSER} -dbpasswd=${DBPASS} -dbname=${DBNAME} -verbose # Delete temp file rm -rf *.$$
Para configurações mais avançadas em que pode haver vários servidores de correio executando o OpenDMARC com um único host MySQL fazendo todo o processamento, o script a seguir é um bom ponto de partida para processar vários arquivos opendmarc.dat remotos , combiná-los e enviar relatórios diários:
#!/bin/bash # Script para processamento remoto de vários arquivos de histórico do OpenDMARC do servidor de email # Baseado em um script de Hamzah Khan (http://blog.hamzahkhan.com/) set -e cd /tmp # Remote Hosts, Database, and History File Info HOSTS='mx1.example.com mx2.example.com mx3.example.com' DBHOST='mysql.example.com' DBUSER='opendmarc' DBPASS='secretpassword' DBNAME='opendmarc' HISTDIR='/var/spool/opendmarc' HISTFILE='opendmarc.dat' for HOST in $HOSTS; do #Create a remote copy of history file, copy and rename the contents to a local file, then remove the remote copy ssh -i /tmp root@${HOST} "touch ${HISTDIR}/${HISTFILE}; mv ${HISTDIR}/${HISTFILE} ${HISTDIR}/${HOST}.$$; cat ${HISTDIR}/${HOST}.$$; rm ${HISTDIR}/${HOST}.$$" # Merge the local history files so opendmarc-import only needs to run once cat ${HOST}.$$ >> opendmarc-merged.$$ done # Import data and send reports /usr/sbin/opendmarc-import –dbhost=${DBHOST} –dbuser=${DBUSER} –dbpasswd=${DBPASS} –dbname=${DBNAME} –verbose < opendmarc-merged.dat /usr/sbin/opendmarc-reports –dbhost=${DBHOST} –dbuser=${DBUSER} –dbpasswd=${DBPASS} –dbname=${DBNAME} –verbose –interval=86400 –report-email "[email protected]" –report-org "Example.com" /usr/sbin/opendmarc-expire –dbhost=${DBHOST} –dbuser=${DBUSER} –dbpasswd=${DBPASS} –dbname=${DBNAME} –verbose # Delete the local .dat files after processing rm -rf *.$$
veja rawopendmarc-send-multi-reports.sh hospedado com pelo GitHub Além desses relatórios, o OpenDMARC suporta um recurso separado chamado FailureReports, que pode gerar um relatório de email individual sobre cada falha. Não recomendado, a menos que você realmente precise e seja um usuário avançado. Solução de problemas Assine a lista de discussão dos usuários do OpenDMARC em http://www.trusteddomain.org/mailman/listinfo/opendmarc-users