da en en da en en sv da nb sq da da da da da da da da da da da en da da nb da da nb en en sv en pt da en en sv en en da en en sv pt en da en en sv fr en it hi en da en en sv en zh da da en en sv fr en en de da en en sv en en da de en en sv fr de de hbs_lat hbs_lat en en hbs_lat da da ja en en sv fr en en en da da en en en da en en en sv fr de de fr fr fr sv en fr en ja fr de fr es nb fr de en en sv de de fr en fr it fr de fr fr fr fr fr fr fr fr en fr fr it fr en fr de fr fr fr fr fr fr de fr fr fr nl fr de fr fr fr fr pt fr fr fr de da fr zh fr fr fr en fr fr fr da fr fr fr fr fr fr fr fr en da zh fr en en en pt pt en en en fr fr fr en en en en en en en en en zh jbo en en en en en en jbo jbo en en en en en en en en jbo en en en en zh en en pt en en en ja es zh en en en zh en en en zh ru en en zh en jbo jbo en en en en zh en en zh jbo en en en en en en de en en en en en en en en nb da en en en da sv de en en sv fr de de fr fr fr sv en fr en ja fr de fr es nb fr de en en sv de de fr en fr it en en en en en en en en en en en en en en en en en en en en en en en en en en en en en en da en en da en da da da sv da nb nb en da da da da en nl da sv da en
Skab overblik over dine DMARC rapporter – NerdGirl
Forbud fører sjældent noget godt med sig
(Last Updated On: 20. januar 2021)
Lad være med blot at kopiere kommandoer fra denne vejledning… Husk at tænke selv 😉
Jeg benytter et simpelt værktøj udviklet af TechSneeze.com, som de kalder dmarkts-report-parser. Det består af en parser der udtrækker data og lægger dem i databasen og et web GUI der fremviser data.
Parseren kan udtrække data på flere måder, bl.a. via en imap forbindelse. Men jeg har ikke konfigureret imap på denne server, da MTA’en (Postfix) primært benyttes til at sende post.
Mit setup fungerer derfor som følger:
Et cronjob dykker ned i disse mails, finder og udtrækker de vedhæftede filer og pakker dem ud til en dertil indrettet folder.
Herefter køres parseren (et perl script) som trækker data ud af de vedhæftede filer og lægger det i databasen
Nu kan data ses på hjemmesiden.
Opret MySQL database og bruger
Mit Postfix setup er meget simpelt da den i dette tilfælde primært benyttes til afsendelse af mail. Der er kun 3-4 konti til modtagelse og jeg har derfor ikke et fancy setup med imap og database, men blot flade tekstfiler hvor disse konti er konfigureret.
I virtual  filen skriver jeg ind hvortil dmarc rapporterne skal leveres:
… og i virtual_mailbox filen fortæller jeg hvilken folder de skal placeres i. Den folder du angiver er relativ i forhold til den mappe du har angivet i virtual_alias_maps  i main.cf.
vim /etc/postfix/virtual_mailbox dmarc@mailbox.example.com mailbox.example.com/dmarc/
Herefter køres postmap på de to filer og Postfix genstartes:
postmap virtual postmap virtual_mailbox postfix reload
Nu henter du parseren fra TechSneeze … jeg benytter wget . Herefter pakker du den ud til den folder hvor du ønsker den skal ligge.
wget https://github.com/techsneeze/dmarcts-report-parser/archive/master.zip unzip master.zip -d /sti/til/folder
unzip master.zip -d /sti/til/folder
På github forsiden kan du se hvilke afhængigheder der skal installeres på forskellige unix/linux operativsystemer.
Jeg har på Ubuntu installeret følgende:
apt-get install libfile-mimeinfo-perl libmail-imapclient-perl libmime-tools-perl libxml-simple-perl \ libclass-dbi-mysql-perl libio-socket-inet6-perl libio-socket-ip-perl libperlio-gzip-perl \ libmail-mbox-messageparser-perl unzip
apt-get install libfile-mimeinfo-perl libmail-imapclient-perl libmime-tools-perl libxml-simple-perl \
libclass-dbi-mysql-perl libio-socket-inet6-perl libio-socket-ip-perl libperlio-gzip-perl \
Gå til den folder du pakkede zip filen ud til, og opret config filen:
cd sti/til/folder cp dmarcts-report-parser.conf.sample dmarcts-report-parser.conf
Da jeg ikke benytter imap delen kan jeg helt ignorere disse parametre, og kun forhold mig til dem der vedrører databasen:
$dbname = 'dmarc'; $dbuser = 'dmarc'; $dbpass = 'very_secret'; $dbhost = 'localhost'; # localhost, hostname or ip $dbport = '3306';
$dbhost = 'localhost'; # localhost, hostname or ip
Opret MySQL database og bruger
Du kan nøjes med at oprette databasen. Hvis dmarcts-report-parser  ikke finder nogen tabeller, sørger den nemlig selv for at oprette dem:
CREATE DATABASE dmarc; GRANT USAGE ON *.* TO `dmarc`@`10.0.0%` IDENTIFIED BY 'very_secret'; GRANT ALL PRIVILEGES ON `dmarc`.* TO `dmarc`@`10.0.0%`;
GRANT USAGE ON *.* TO `dmarc`@`10.0.0%` IDENTIFIED BY 'very_secret';
GRANT ALL PRIVILEGES ON `dmarc`.* TO `dmarc`@`10.0.0%`;
Udskillelse af vedhæftede filer
Inden jeg kan bruge dmarcts-report-parser, skal jeg trække de vedhæftede rapporter ud af de e-mails der er modtaget. Til det formål benytter jeg mu  som er en del af maildir-utils .
Nu oprettes et shell script der trækker filerne ud. Herunder har jeg angivet den essentielle del af dette script.
#!/bin/bash DMARC_MAILACCOUNT="/var/spool/postfix/virtual/mailbox.example.com/dmarc/new" DMARC_MAIL_NEW=""sti/til/dmarc/mail/new" DMARC_MAIL_ERROR=""sti/til/dmarc/mail/error" DMARC_MAIL_DONE=""sti/til/dmarc/mail/processed" DMARC_ATTACHMENTS_NEW="sti/dmarc/attachments/new" DMARC_ATTACHMENTS_DONE="sti/dmarc/attachments/processed" MU=/usr/bin/mu MV=/usr/bin/mv LS=/usr/bin/ls #Count regular files in mail account dir mail_count=$($LS $DMARC_MAILACCOUNT/ | $WC -l) if [[ $mail_count -eq "0" ]]; then echo "There are no mails to process (mail count = $mail_count)" else #Move mails to dmarc maildir echo "Moving $mail_count mails to $DMARC_MAIL_NEW" $MV $DMARC_MAILACCOUNT/* $DMARC_MAIL_NEW/ fi file_count=$($LS $DMARC_MAIL_NEW/ | $WC -l) if [[ $file_count -eq "0" ]]; then if [[ $mail_count -eq "0" ]]; then echo "Nothing to do" exit 0 fi fi #If number of files is not equal after moving te mails #We may have leftovers from a previous run. #This should be investigated if [[ $mail_count -ne "$file_count" ]]; then echo "mail count: $mail_count" echo "file count: $file_count" echo "Please investigate te diff between te above numbers" exit 0 fi echo "There are $file_count dmarc reports" exit 0 FILES="${DMARC_MAIL_NEW}/*" for file in $FILES do f=$(basename "$file") echo "Extracting attachments from $f" #List attachments output=$($MU extract $file) #Loop te list extract_error=0 while IFS= read -r outline; do if [[ $outline =~ ^[[:space:]]*([0-9]+)(.*)\[attach\] ]]; then #Get te number of te file matched in te above line number="${BASH_REMATCH[1]}" extr_cmd="$MU extract $file --parts=$number --target-dir=$DMARC_ATTACHMENTS_NEW" #Extract te file $extr_cmd return_code=$? if [[ $return_code -eq "0" ]]; then echo "File successfully extracted." else extract_error=1 echo "$extr_cmd exited with code $return_code" fi fi done <<< "$output" if [[ $extract_error -eq "1" ]]; then echo "Moving file to mail error folder" $MV $file $DMARC_MAIL_ERROR/ else echo "Moving file to mail processed folder" $MV $file $DMARC_MAIL_DONE/ fi done #Unpack gz files gunzip $DMARC_ATTACHMENTS_NEW/*.xml.gz #There may also be zip files to unpack unzip $DMARC_ATTACHMENTS_NEW/*.zip #Remove te unpacked zip files rm $DMARC_ATTACHMENTS_NEW/*.zip #Add data to database $DMARC_PARSER -x $DMARC_ATTACHMENTS_NEW/* #Move attachments to processed/ folder $MV $DMARC_ATTACHMENTS_NEW/* $DMARC_ATTACHMENTS_DONE/
#Count regular files in mail account dir
mail_count=$($LS $DMARC_MAILACCOUNT/ | $WC -l)
if [[ $mail_count -eq "0" ]]; then
echo "There are no mails to process (mail count = $mail_count)"
#Move mails to dmarc maildir
echo "Moving $mail_count mails to $DMARC_MAIL_NEW"
file_count=$($LS $DMARC_MAIL_NEW/ | $WC -l)
if [[ $file_count -eq "0" ]]; then
if [[ $mail_count -eq "0" ]]; then
echo "Nothing to do"
#If number of files is not equal after moving te mails
#We may have leftovers from a previous run.
#This should be investigated
if [[ $mail_count -ne "$file_count" ]]; then
echo "mail count: $mail_count"
echo "file count: $file_count"
echo "Please investigate te diff between te above numbers"
echo "There are $file_count dmarc reports"
for file in $FILES
echo "Extracting attachments from $f"
while IFS= read -r outline; do
if [[ $outline =~ ^[[:space:]]*([0-9]+)(.*)\[attach\] ]]; then
#Get te number of te file matched in te above line
extr_cmd="$MU extract $file --parts=$number --target-dir=$DMARC_ATTACHMENTS_NEW"
if [[ $return_code -eq "0" ]]; then
echo "File successfully extracted."
echo "$extr_cmd exited with code $return_code"
if [[ $extract_error -eq "1" ]]; then
echo "Moving file to mail error folder"
echo "Moving file to mail processed folder"
#There may also be zip files to unpack
#Remove te unpacked zip files
#Add data to database
#Move attachments to processed/ folder
dmarcts-report-viewer og Apache konfiguration
Nu mangler du blot at hente den del der præsenterer data og konfigurere Apache:
Pak zip filen ud i dit webdir. På Ubuntu har jeg placeret filerne under /var/www/vhosts/dmarc .
Min Apache 2.4 konfiguration ser således ud:
DocumentRoot /var/www/vhosts/dmarc ServerName dmarc.example.com DirectoryIndex dmarcts-report-viewer.php ErrorLog "|/usr/bin/rotatelogs -l /var/log/apache2/dmarc.example.com/error.%Y.%m.%d 86400" CustomLog "|/usr/bin/rotatelogs -l /var/log/apache2/dmarc.example.com/access.%Y.%m.%d 86400" combined php_value session.save_path /var/www/data/dmarc/sessions php_flag log_errors On php_flag display_errors Off php_value error_log /var/log/apache2/dmarc.example.com/php_error.log SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf   SSLOptions +StdEnvVars     Options FollowSymLinks AllowOverride None AuthType Basic AuthName "DMARC report viewer" AuthUserFile /etc/apache2/passwd-ed-admin Require valid-user
ErrorLog "|/usr/bin/rotatelogs -l /var/log/apache2/dmarc.example.com/error.%Y.%m.%d 86400"
CustomLog "|/usr/bin/rotatelogs -l /var/log/apache2/dmarc.example.com/access.%Y.%m.%d 86400" combined
AuthName "DMARC report viewer"
En særlig tak til den person der skrev dette blog-indlæg. Uden det var jeg ikke faldet over dmarcts-report-parser:
Self Hosted DMARC reports
Udskift nouveau driver med NVIDIA på Fedora 33 – og fortryd
I gang med Angular 13 på Linux
Brug af grep kommandoen
Installer Asbru Connection Manager på Fedora
Installer DBeaver på Fedora
Node Package Manager (npm)
Linux: Afvikle en kommando som en anden bruger
MariaDB: Slå generel log til midlertidigt
Udskift nouveau driver med NVIDIA på Fedora 33 – og fortryd
Skab overblik over dine DMARC rapporter
Kategorier Vælg kategori Aftensmad Akrylmaling Bagværk Computer Dessert Fotografi Generelt Grød Hakket oksekød Hobby Hvidkål Ikke kategoriseret Internet IT Krop og sind PHP Pizza Politik Samfund Server Tips & Tricks Vegansk Webudvikling
Arkiver Vælg måned august 2022 april 2022 marts 2022 oktober 2021 maj 2021 marts 2021 februar 2021 januar 2021 december 2020 november 2020 oktober 2020 august 2020 juli 2020 juni 2020 marts 2020 januar 2020 december 2019 november 2019 oktober 2019 august 2019 juni 2019 april 2019 februar 2019 december 2018 oktober 2018 september 2018 juli 2018 juni 2018 maj 2018 april 2018 februar 2018 januar 2018 december 2017 oktober 2017 september 2017 august 2017 juli 2017 juni 2017 maj 2017 april 2017 januar 2017 december 2016 november 2016 oktober 2016 september 2016 januar 2016 december 2015 november 2015 oktober 2015 september 2015
Proudly powered by WordPress | Theme: chichi by xtianmark.