NotificationMailAvecProxmox
Contexte
Un serveur proxmox est hébergé à l'Élabo, et dispose de plusieurs disques en RAID.
On souhaite recevoir une notification par e-mail du démon RAID mdadm quand un disque devient défaillant et doit donc être rapidement remplacé.
Contraintes: le port 25 est bloqué par l'abonnement fibre Orange Pro, donc pas moyen d'envoyer le mail directement sur la VM d'Actux. On va donc envoyer via le SMTP d'Orange.
En plus, on va mettre en place un port 587/submission limité (sans relai, sans authentification) sur le Postfix d'Actux.
Mise en place
Adaptation à Proxmox
Proxmox trafique /root/.forward pour passer les e-mails sur /usr/bin/proxmox-mail-forward, qui passe l'e-mail au système de notifications Proxmox.
Dans l'interface, on pourrait ajouter l'adresse d'admin en destinataire, mais on va plutôt le faire dans le .forward ci-dessous. (Datacenter > Notifications > mail-to-root > Additional recipients)
Normalement on a une trace de ça dans /etc/pve/notifications.cfg.
Ici on va faire repasser la notification sur la couche standard Sendmail pour avoir la main avec Postfix. (On aurait peut-être pu directement configurer ce qui va suivre avec Datacenter > Notifications > Add > SMTP, mais pas testé. Et puis le système proxmox-mail-forward ne fonctionne que pour les mails à root@, avec un Postfix bien configuré les utilisateurs non-root pourront envoyer des e-mails.)
Pour garder une copie locale des e-mails, on ajoute \root à /root/.forward:
\root, root@breizh-entropy.org, |/usr/bin/proxmox-mail-forward
On configure ensuite Postfix pour passer par Orange. Par sécurité on crée un compte e-mail secondaire, pour ne pas utiliser le compte principal dont le mot de passe est susceptible de changer.
Dans /etc/postfix/main.cf:
## Relai Orange relayhost = [smtp.orange.fr]:submission smtp_sasl_auth_enable = yes smtp_sasl_tls_security_options = noanonymous smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd sender_canonical_maps = hash:/etc/postfix/sender_canonical # Route directe vers mail breizh-entropy.org transport_maps = hash:/etc/postfix/transport
Commenter aussi les lignes suivantes:
#default_transport = error #relay_transport = error
Dans /etc/postfix/sasl_passwd, pour fournir les identifiants SMTP Orange:
[smtp.orange.fr]:submission xxxxx@orange.fr:MotDePasse!
Dans /etc/postfix/sender_canonical, pour ré-écrire le From, car Orange n'accepte plus les expéditeurs non-Orange depuis courant 2024:
root xxxxx@orange.fr
Dans /etc/postfix/transport:
breizh-entropy.org :[mail.actux.eu.org]:submission # abandonné: # SMTPS wrappermode (TCP port 465) requires setting "smtp_tls_wrappermode = yes", and "smtp_tls_security_level = encrypt" (or stronger) # => trop contraignant, casse le relai smtp.orange.fr #breizh-entropy.org :[mail.actux.eu.org]:submissions
Redémarrer tout ça:
postmap /etc/postfix/sasl_passwd postmap /etc/postfix/sender_canonical postmap /etc/postfix/transport service postfix restart
Tester l'envoi sur une adresse perso:
echo Bonjour. | mail -s Test chez@vous.com
Inspecter la copie locale:
mutt -f /var/mail/root
Vérifier que l'envoi s'est bien passé:
# journalctl -fxb oct. 09 21:19:20 proxmox postfix/smtp[17211]: 5170F1D40609: to=<root@breizh-entropy.org>, relay=smtp.orange.fr[80.12.26.33]:587, delay=2.2, delays=0/0/0.21/2, dsn=2.0.0, status=sent (250 2.0.0 ycDOsyZ2QMzKhycDOsPxxX mail accepted for delivery)
Tester enfin l'envoi d'alertes RAID par mdadm:
mdadm --monitor --scan --oneshot --test
C'est bon, on est maintenant prévenu quand un disque lâche !
Mail Actux
/etc/postfix/master.cf:
# Ouvre submission (587/tls) pour que des machines restreintes en # port 25 (typiquement: le hackerspace et sa box orange pro..) # puissent envoyer des alertes aux admin. # SASL non-activé car pas configuré. submission inet n - - - - smtpd -o syslog_name=postfix/submission # -o smtpd_tls_security_level=encrypt # -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_reject_unlisted_recipient=yes -o smtpd_client_restrictions=$mua_client_restrictions -o smtpd_helo_restrictions=$mua_helo_restrictions -o smtpd_sender_restrictions=$mua_sender_restrictions -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_auth_destination,reject -o milter_macro_daemon_name=ORIGINATING
Le cœur de la config est de remplacer permit_sasl_authenticated (relai authentifié) par permit_auth_destination (point alternatif de réception locale).
TODO: le mailname du serveur est bancal, et la conf actuelle fait du coup de l'usurpation de l'adresse xxxx@orange.fr, ce qui monte le score spam. À réfléchir.
TODO: par robustesse, peut-être renvoyer root vers une adresse non-actux, ça fera 2 flux différents