Share your "hooks" to apply custom configurations- Partagez vos "hooks" pour appliquer des configurations personnelles

Ok, par contre c’est toujours avec slow à la fin, c’est bien ça ? Par exemple

# Wanadoo / Orange
wanadoo.com slow:
wanadoo.fr slow:
wanadoo.es slow:
orange.com slow:
orange.fr slow:
free.fr slow:

Oui si tu veux mettre la même règle pour tout le monde.
Sinon tu peux créer plusieurs règles comme ceci:

Dans /etc/postfix/transport

wanadoo.com slow:
wanadoo.fr slow:
orange.fr slow:
free.fr regle2:
yahoo.com regle2:

Dans /etc/postfix/master.cf

slow    unix    -       -       n       -       5       smtp
   -o syslog_name=postfix-slow
   -o smtp_destination_concurrency_limit=1
   -o slow_destination_rate_delay=5'
regle2  unix    -       -       n       -       5       smtp
   -o syslog_name=postfix-slow
   -o smtp_destination_concurrency_limit=4`
   -o slow_destination_rate_delay=1'

Dans /etc/postfix/main.cf

slow_destination_recipient_limit = 20
slow_destination_concurrency_limit = 1
slow_destination_rate_delay = 5s

regle2_destination_recipient_limit = 2
regle2_destination_concurrency_limit = 4
regle2_destination_rate_delay = 1s

Les chiffres ci-dessus sont un exemple, tu mets ce que tu veux !

1 Like

Super…
Après c’est difficile de savoir quelles règles pour ne pas être considérer comme spam et par quelle FAI… Ils nous facilite pas la tâche…

J’ai une galère, un utilisateur essaye d’envoyer plusieurs mails et les mails en .orange ne reçoit pas leurs mails…
La règle que j’ai mis

17 echo '
18 transport_maps = hash:/etc/postfix/transport
19 slow_initial_destination_concurrency=1
20 slow_destination_concurrency_limit=1
21 slow_destination_rate_delay=5' >> $postfix_main_conf
22
23 echo '
24 slow    unix    -       -       n       -       5       smtp
25    -o syslog_name=postfix-slow
26    -o smtp_destination_concurrency_limit=1
27    -o slow_destination_rate_delay=5' >> $postfix_master_conf

Et je retrouve une erreur comme celle-ci

Mar  2 18:18:23 domain postfix/trivial-rewrite[2819055]: warning: database /etc/postfix/transport.db is older than source file /etc/postfix/transport
Mar  2 18:18:23 domain postfix/qmgr[2619125]: warning: connect to transport private/orange: Connection refused
Mar  2 18:18:23 domain postfix/qmgr[2619125]: 5765F28E10B: from=<userdomain@domain.fr>, size=64395, nrcpt=1 (queue active)
Mar  2 18:18:23 domain postfix/error[2819056]: 3E0AA28E3ED: to=<personne@orange.fr>, relay=none, delay=21313, delays=21313/0.02/0/0.05, dsn=4.3.0, status=deferred (mail transport unavailable)
Mar  2 18:18:28 domain postfix/error[2819056]: 5765F28E10B: to=<personne2@orange.fr>, relay=none, delay=2153, delays=2148/5.1/0/0.06, dsn=4.3.0, status=deferred (mail transport unavailable)

Du coup je tente d’enlever ce hook et de repartir avec une configuration de départ…

Je confirme, en supprimant le hook et en lançant un regen_conf pour supprimer les règles ajoutées, les mails orange ont fonctionné…

Yes Hooks | Yunohost Documentation

Feel free to suggest a PR on Yunohost for this …

1 Like

après il faut trouver les bonnes configurations pour que ça marche…
que penser de ce bug dans mes logs ?
warning: database /etc/postfix/transport.db is older than source file /etc/postfix/transport

Il faut faire

postmap /etc/postfix/transport

Je n’ai pas de souci particulier avec ce hook, pour l’instant.
Par contre je vois dans ton log:

Du coup je te conseille de faire:

postmap /etc/postfix/transport

puis

/etc/init.d/postfix restart

Si on a bien les règles ajoutées avec le hook, c’est bien cela ? du coup j’hésite à le remettre en place, je me rends compte que cette base de données a été crée à la suite…
Est-ce que je ne risque pas d’avoir de nouveaux des mails refusés ? Cela veut dire qu’il faut relancer de temps à autres cette commande ? Bon je regarde le manuel et j’avais aussi vu cette commande: Postfix manual - transport(5)

Cette commande postmap est à faire chaque fois que tu modifies une base de donnée, ici c’est le fichier /etc/postfix/transport.
Normalement ce fichier tu ne le modifies pas tous les jours donc il n’y a pas lieu de relancer la commande régulièrement.

1 Like

Ok merci, du coup j’ai remis en place le hook et je vais tester…

Tiens comme je suis là je partage un autre hook que je trouve intéressant et qui fonctionne bien.
C’est pour modifier les adresses qui peuvent se connecter en root (PermitRootLogin).

#!/bin/bash

my_local_address=192.168.0.1
my_home_address=77.XX.XX.XX
my_vpn=88.XX.XX.XX

action=$1
pending_dir=$4
ssh_conf=$pending_dir/../ssh/etc/ssh/sshd_config

[[ "$action" == "pre" ]] || exit 0
[[ -e $ssh_conf ]] || exit 0


sed -e "s/Match Address.*/Match Address $my_local_address,$my_home_address,$my_vpn/" \
    -i $ssh_conf

Par contre j’ai eu un bug quand je mettais plus de trois adresses, à creuser…

1 Like

Il existe un settings déjà non ? peut-être que pour la webadmin en fait, c’est différent…

Ok, ça a l’air de fonctionner… my bad, j’avais peut-être touché au fichier transport sans mettre à jour l’index…

Oui je n’ai pas précisé, c’est pour la connexion ssh.

Je vous partage des hooks pour ce cas particulier: un serveur avec plusieurs noms de domaines, domaineA domaineB domaineC. La particularité est que l’on veut utiliser les MX du registar de Gandi pour le domaineC.

Pour cela on exclus le domaineC dans /etc/postfix/ldap-domains.cf

/etc/yunohost/hooks.d/conf_regen/70-postfix_customhook

#!/bin/bash

action=$1
pending_dir=$4
postfix_ldap_domains_conf=$pending_dir/../postfix/etc/postfix/ldap-domains.cf

source /usr/share/yunohost/helpers
ynh_write_var_in_file --file=$postfix_ldap_domains_conf --key=query_filter --value='(&(&(objectClass=mailDomain)(virtualdomain=%s))(!(virtualdomain=domaineC.tld)))'

et pour dnsmasq de domaineC on change les valeurs MX

/etc/yunohost/conf_regen/80-dnsmasq_customhook

#!/bin/bash

action=$1
pending_dir=$4
domaineC_tld_conf=$pending_dir/../dnsmasq/etc/dnsmasq.d/domaineC.tld

[[ "$action" == "pre" ]] || exit 0
[[ -e $domaineC_tld_conf ]] || exit 0

sed -e 's/mx-host=domaineC.tld,domaineC.tld,5/mx-host=spool.mail.gandi.net,5/' \
    -i $domaineC_tld_conf

Hi there,

Two hooks for login in a dokuwiki page the upgrades of apps and yunohost packages (I don’t want to connect throught ssh and watch the logs everytime I want to know when some app or package has been upgrade, and I am too lazy to do it manually after each upgrade).

=> kit/Yunohost_public: Fichiers à destination de la communauté Yunohost - Yunohost_public - Gitea

Apps :

/etc/yunohost/hooks.d/post_app_upgrade/01-log-app-upgrade

#!/bin/bash

source /usr/share/yunohost/helpers
logfile="/var/www/dokuwiki/data/pages/update.txt" #Fichier de log
current_date=$(date +"%Y/%m/%d") #Date au format YYY/MM/DD

id=$YNH_APP_ID
current_version=$YNH_APP_CURRENT_VERSION
updated_version=$YNH_APP_MANIFEST_VERSION
newline="**$current_date** : **App** : $id $current_version  -> $updated_version"

sed -i "3i\\$newline\n" $logfile #Ajout de la nouvelle entrée ligne 3.

The second one is not really a hook, it is a bash programm launched after each apt upgrade.

Create this file : /etc/apt/apt.conf.d/80upgradehook

DPkg::Post-Invoke {bash "/home/yuno_package_update_log.bash";};

(replace the path/name of the .bash by yours.

and, of course, the bash programm itself :

yuno_package_update_log.bash

#!/bin/bash

# Fichier loggant automatiquement les paquets voulus (ici ceux liés à yuno) dans un fichier du wiki
# Lançable automatiquement après un apt upgrade en créant le fichier /etc/apt/apt.conf.d/80upgradehook

WIKIFILE="/var/www/dokuwiki/data/pages/update.txt"
LOGFILE="/var/log/dpkg.log"
PACKAGES_WANTED=("yunohost" "yunohost-admin" "moulinette" "ssowat") # Liste des paquet à inscrire dans le fichier de log

function read_logfile { #On parcourt le fichier LOGFILE ligne par ligne en partant de la fin
	while IFS= read -r log_line; do
		if [[ "$PACKAGE_LOGGED" == "FALSE" ]];then
			search_package
		else
			return 0
		fi
	done < <(tac $LOGFILE | grep "status installed")
}

function search_package { #On vérifie si la ligne de log contient le paquet recherché
	if [[ $(echo "$log_line" | grep "$package":) != "" ]]; then  #ajout des ":" après le package pour isoler yunohost de yunohost-admin
		if [[ "$PACKAGE_LOGGED" == "FALSE" ]];then
			PACKAGE_VERSION=$(echo $log_line | awk '{print $NF}') #Extraction de la version du paquet
			write_wiki
		fi
	else
		return 0
	fi
}

function write_wiki { #On écrit dans le fichier WIKIFILE
	check_wiki

	if [[ "$PACKAGE_LOGGED" == "FALSE" ]]; then
		DATE=$(echo $log_line | awk '{print $1}') #Date d'installation du paquet (1ere colonne)
		NEW_LINE="**$DATE** : **Sys** : $package -> $PACKAGE_VERSION" #Ligne à inscrire
		sed -i "3i\\$NEW_LINE\n" $WIKIFILE #Ajout de la nouvelle entrée ligne 3.
		PACKAGE_LOGGED=TRUE
	fi
}

function check_wiki { #On boucle sur les lignes de WIKIFILE pour trouver le package et la versions idoines
	while IFS= read -r wiki_line; do
			if [[ $(echo "$wiki_line" | grep "$package" | grep "$PACKAGE_VERSION") != "" ]]; then # Si ligne non présente dans WIKIFILE 
				PACKAGE_LOGGED=TRUE
				return 0
			fi
		done < <(cat $WIKIFILE | grep "$package")
}

for package in "${PACKAGES_WANTED[@]}"
do
	PACKAGE_LOGGED=FALSE
	read_logfile
done
exit 0

This lastprogramm will probably be updated, but as far as I know it works with manual upgrade (yunohost tools upgrade system) and automatic upgrade from unattended-upgrades.

Bonjour je suis à la recherche d’un hook pour Jellyfin.
J’ai ajouté à la main les ips qui pouvaient se connecter au Jellyfin mais à chaque MAJ le fichier NGYNX est reset
Voici comment j’ai fais

	allow X.X.X.X/8;
	allow X.X.X.X.X;
	deny all;

Je souhaiterai que se bloc ne disparaissent pas à chaque MAJ.
Je précise que les personnes se connectent via l’app et non via yuno.
Je ne sais pas si c’est la meilleur méthode pour filtrer mais en tout cas ça fonctionne.

Merci.