Curitiba/PR Contato
Administração e Suporte em Ti

# 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