Postfix conditionele configuratie

Pagina: 1
Acties:

  • vanaalten
  • Registratie: September 2002
  • Laatst online: 08:46
TL/DR: hoe kan ik in Postfix's "main.cf" configuratiestatements maken afhankelijk van het ingestelde IP-adres?

Achtergrond:
24/7 server (hobby, niet bedrijfskritisch) met o.a. Debian stable, Postfix (2.11) en nog wat andere dingen om als web/mail/fileserver te werken. IP-adres is vast, 192.168.1.2.

Dagelijks wordt er een hardware-identieke backupserver gestart die met rsync een complete mirror van de server naar zichzelf maakt. Na 'rsync' wordt het IP-adres in /etc/network/interfaces gecorrigeerd naar 192.168.1.3 (IP-adres van backup-machine).

Het idee is dat als m'n server ooit uitvalt, ik enkel het IP-adres van de backup-machine hoef aan te passen om weer in de lucht te zijn - en hooguit een dag aan mail of werk kwijt te zijn.
Werkt prima, maar: ik wil na afloop van het syncen een mail vanaf de backup machine sturen ('klaar!') naar een mailadres op de main server. Echter Postfix op de backup-server ziet zichzelf als de bestemming (want, o.a. mydestination zorgt ervoor dat dat match met het 'to' adres). Ofwel, ik zou Postfix 'anders' willen instellen, afhankelijk van het IP-adres (main of backup machine).

Work-in-progress:
Het conditioneel configureren in main.cf lijk ik voor elkaar te hebben, in main.cf:
code:
1
2
3
4
5
6
7
backup=1    # change to "backup=" for main server
...
relayhost_main = smtp.ziggo.nl
relayhost_backup = 192.168.1.2
relayhost_select1 = ${backup?$relayhost_backup}
relayhost_select2 = ${backup:$relayhost_main}
relayhost = ${relayhost_select1}${relayhost_select2}

... en op dezelfde manier voor bijv. mydestinations. Het voelt nog wat gekunsteld, ben benieuwd of dit charmanter kan maar het werkt wel. Helaas ondersteund Postfix 2.11 nog niet de "check?A:B" C-achtige notatie, dus dan maar op deze manier.

Maar: hoe krijg ik dit nu als functie van het IP-adres van de machine? "main.cf" lijkt geen mogelijkheid te hebben om shell commando's aan te roepen, er zijn (postconf output) geen variabelen met het IP-adres van de machine...
De beste optie die ik zelf kan verzinnen is dat m'n sync-script niet alleen /etc/network/interfaces aanpast, maar ook Postfix's "main.cf" aanpast. Niet mooi, maar zou wel werken. Liever iets dat mooi is.

Ofwel, zie ik een mooie oplossing over het hoofd?

Acties:
  • +1 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Hoe zend je dat mailtje nu? Ik neem aan met sendmail. Je kunt natuurlijk ook de sendmail op de remote machine gebruiken:
cat payload | ssh <remote> sendmail mailadres@localhost

  • vanaalten
  • Registratie: September 2002
  • Laatst online: 08:46
Mijzelf schreef op zaterdag 10 september 2016 @ 12:23:
Hoe zend je dat mailtje nu? Ik neem aan met sendmail. Je kunt natuurlijk ook de sendmail op de remote machine gebruiken:
cat payload | ssh <remote> sendmail mailadres@localhost
Ha, precies de reden dat ik m'n vraag in NOS geplaatst heb en niet in software-algemeen: omdat een oplossing ook buiten Postfix kan liggen. Geen seconde gedacht over via-ssh-sendmail gebruiken, maar dat lijkt een hele prima oplossing te zijn!

Wel gebruik ik nu 'mime-construct' ipv sendmail, omdat ik die net wat handiger vind in gebruik (commandline switches voor subject, om maar wat te noemen), maar met sendmail via ssh kan ik precies bereiken wat ik wil. Dank! :)