quota (brouillon)

repquota -s /var/www : reporting de l’espace utilisé par utilisateur pour le volume /var/www (-s pour les valeurs «human readable» )

edquota michael -f /var/www/ éditer les quotas pour le volume /var/www et l’utilisateur michael

warnquota -d /var/www envoyer un message à ceux qui ont dépassés le quota autorisé (-d pour ne pas afficher le détail)

/etc/warnquota.conf :

MESSAGE   = {MESSAGE}
SIGNATURE = {SIGNATURE}
# MAIL_CMD = "/usr/sbin/sendmail -t"
MAIL_CMD = "/usr/local/sbin/custom-warnquota"
FROM 		= "quota@exemple.fr"
SUBJECT 	= {SUBJECT}

/usr/local/sbin/warnquota-custom:

#!/bin/bash

original=$(cat /dev/stdin)

to=$(echo "$original"|grep '^To: '|sed 's/To: //')

result=${original}
result=$(echo "$result"|sed "s/{SUBJECT}/[quota] quota dépassé pour le site $to/")

message='print "<p>Bonjour,</p>\n";'
message=$message' print "<p>le serveur a détecté que le quota autorisé pour le dossier <b>'$to'</b> a été dépassée.</p>\n";'
message=$message' print "<p>Cela signifie que le système pense que vous utilisez plus d'"'"'espace disque que ce que vous devriez.<br><br>Si les fichiers ne sont pas supprimés avant la «période de grâce», le système empêchera la création de nouveau fichiers. La limite actuelle est à 1Go.</p>";'
message=$message' print "\n<p>Bonne journée,<br><br>Michaël<br>(Ce courriel est généré automatiquement)</p>";'
signature='print "<br>";'

# awk '1;/PATTERN/{ print "add one line"; print "\\and one more"}'
result=$(echo "$result"|awk "1;/{MESSAGE}/{ $message$signature }")

result=$(echo "$result"|sed "s/{MESSAGE}//")
result=$(echo "$result"|sed "s/{SIGNATURE}//")
result=$(echo "$result"|sed "s/Content-Type: text\/plain/Content-Type: text\/html/")

result=$result

echo "$result" | /usr/sbin/sendmail -t

command_return=$?
if [[ "$command_return" -ne 0 ]]; then
  echo "Erreur $command_return: Une erreur est survenue avec la commande sendmail pour les quotas "
  echo "result:"
  echo "$result"
  exit 1
fi

script création dkim

Script pour automatiser la configuration de postfix/DKIM pour un nouveau site à héberger (prérequis: installer dkim et configurer postfix comme ici: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy )

#!/bin/bash

domain=$1

# «selector» est utilisé pour retrouver l'enregistrement TXT correspondant dans la zone DNS
selector=mail

opendkim_config_path=/etc/opendkim
keys_path=$opendkim_config_path/keys

if [[ -z "$domain" ]]; then
  echo "1er argument (domaine) manquant"
  exit 1
fi

if [[ ! "$domain" =~ ^[a-z_A-Z-]+\.[a-zA-Z]{2,4}$ ]]; then
  echo "domaine '$domain' incorrect"
  exit 2
fi


if [[ -d $keys_path/$domain ]]; then
  echo "dossier '$domain' existe déjà dans $keys_path"
  exit 3
fi

file_trusted_host=$opendkim_config_path/TrustedHosts
file_signing_table=$opendkim_config_path/SigningTable
file_key_table=$opendkim_config_path/KeyTable

if grep "$domain" $file_trusted_host; then
  echo "Le domaine '$domain' existe déjà dans $file_trusted_host"
  exit 4
fi

if grep "$domain" $file_signing_table; then
  echo "Le domaine '$domain' existe déjà dans $file_signing_table"
  exit 5
fi

if grep "$domain" $file_key_table; then
  echo "Le domaine '$domain' existe déjà dans $file_key_table"
  exit 6
fi

keyTableString="$selector._domainkey.$domain $domain:$selector:/etc/opendkim/keys/$domain/$selector.private"
signingTableString="*@$domain $selector._domainkey.$domain"
trustedHostString="*.$domain"

echo $trustedHostString >> $file_trusted_host
echo $signingTableString >> $file_signing_table
echo $keyTableString >> $file_key_table

mkdir $keys_path/$domain
cd $keys_path/$domain
opendkim-genkey -s $selector -d $domain
chown opendkim:opendkim $selector.private

cd $opendkim_config_path
chown opendkim:opendkim $keys_path/$domain

echo "Ajouter la clé publique à la zone DNS"
echo "-----"
cat $keys_path/$domain/$selector.txt
echo "-----"

systemctl restart postfix
systemctl restart opendkim

echo "Commande pour tester:"
echo -----
random_email_dkimvalidator=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 19 | head -n 1)@dkimvalidator.com
echo "test |mail -a 'From: root@$domain' -s 'test dkim pour $domain' $random_email_dkimvalidator"
echo "et vérifier: https://dkimvalidator.com/results?email=$random_email_dkimvalidator"
echo -----