Uitleg scripts: Difference between revisions

From Hobbynet Admin Wiki
Jump to navigation Jump to search
 
(137 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Introductie==
==Introductie==
De scripting is er op gericht een aantal tabellen toe te voegen aan de postfixadmin database. De tabellen zijn helemaal standaard gehouden zoals postfixadmin ze aanmaakt bij de installatie. Postfixadmin kan worden gebruikt om veranderingen aan te brengen.
De scripting is er op gericht een aantal tabellen te vullen in de postfixadmin database. De tabellen zijn in eerste instantie helemaal standaard gehouden zoals postfixadmin ze aanmaakt bij de installatie. Postfixadmin kan worden gebruikt om veranderingen in de data aan te brengen. Later zijn enkele velden toegevoegd voor het specifieke gebruik binnen Hobbynet. Voornamelijk om het creëren van tekst bestanden als bron bestanden aan te maken.
 
===Proces===
Het hele proces is gericht op het behoud van (mogelijk gewijzigde) data. In de aanloop fase werden de platte tekst bestanden met de hand bijgehouden waarna de database tabellen gegenereerd werden. In de test fase werden de uit de database gemaakte tekst bestanden vergeleken met de originele bestanden. In de productie fase zijn er geen originele tekst bestanden meer; de vorige versie wordt veilig gesteld en daarna vervangen door de verse dump uit de database. Op die wijze worden nieuwe records meegenomen die met PostfixAdmin in de database zijn gemaakt. De laatst bekende data in de database wordt namelijk eerst gedumpt naar tekst bestanden, die vervolgens weer worden gebruikt om de database te laden. De externe bestanden hobbyabon.txt (was husers) en kaderfunc.txt (was b3a.txt) zijn hier een uitzondering op; die worden nooit overschreven maar door het script '''upd_mailserver''' op de LDAP server geplaatst. '''upd_smail''' op de mailserver doet de rest.<br>
Zie ook de pagina [[bronbestanden]].


===Locatie van de bestanden===
===Locatie van de bestanden===
De bron bestanden: b3a.txt en b3n.txt, hobbynet_alias_domains.txt, hobbynet_aliases.txt, kadernet_alias_domains.txt, kadernet_aliases.txt, scouthout_aliases.txt en de header/footer bestanden (.tmpl) staan in '''/usr/local/hobbynet/lib''' directory. De scripts staan in '''/usr/local/hobbynet/bin'''. De backups komen in '''/usr/local/hobbynet/lib/backup''' terecht en de gegenereerde MySQL bestanden komen in '''/usr/local/hobbynet/lib/loader'''
De bron bestanden: '''kaderfunc.txt''', '''hobbyabon.txt''' staan in de data directory (via scp van hcc-ldap-lb1 afkomstig), '''extra_alias_domains.txt''', '''extra_aliases.txt''', '''scouthout_aliases.txt''' en de '''_header/_footer''' bestanden (.tmpl) staan ook in '''/usr/local/hobbynet/data''' directory.
 
De scripts staan in '''/usr/local/hobbynet/local'''. De backups van de database en tekst bestanden komen in '''/usr/local/hobbynet/data/backup''' terecht. De door de scripts gegenereerde MySQL bestanden komen in '''/usr/local/hobbynet/data/loader'''.
 
De bestanden in de backup directory moeten geregeld opgeruimd worden; er zit geen limiet op het aantal versies. In de backup directory staat ook een script om een versie van een bepaalde datum/tijd snel terug te zetten waarna '''upd_smail''' de database herlaadt.


===Scripts===
===Scripts===
De (perl) scripts zijn bewust kort en simpel gehouden om ze zo modulair mogelijk te maken. De tactiek is telkens hetzelfde: bij elk SQL loader bestand is er een header, tussenliggende gelijksoortige data regels en een footer te onderscheiden.
De (perl) scripts zijn bewust kort en simpel gehouden om ze zo modulair mogelijk te maken. De tactiek is telkens hetzelfde: bij elk te maken SQL loader bestand is er een header, tussenliggende gelijksoortige data regels en een footer te onderscheiden.
* De header is alle tekst die door een MySQL dump gemaakt wordt (met een delete-if-exists erin), tot en met de eerste SQL regel: INSERT INTO...VALUES.
* De header is alle tekst die door een MySQL dump gemaakt wordt (met een delete-if-exists erin), tot en met de eerste SQL regel: INSERT INTO...VALUES.
* De diverse scripts voegen de tussenliggende data regels toe.
* De diverse scripts voegen de tussenliggende data regels toe.
* De footer is gewoonlijk een laatste data regel maar dan eindigend op ''';''' in plaats van ''',''' en de afsluitende regels van de dump.
* De footer is gewoonlijk een laatste data regel maar dan eindigend op ''';''' in plaats van ''',''' en de afsluitende regels van de dump.
Een dergelijk SQL loader bestand is zonder meer terug te laden in MySQL. De tabel wordt eerst weggegooid en wordt daarna opnieuw aangemaakt.


==upd_smail==
==upd_smail==
Dit script is het overkoepelende script dat alle '''gen_*''' scripts op zijn beurt aanroept en mysql om de database te laden. '''upd_smail''' op zijn beurt wordt weer door '''upd_all''' aangeroepen. In dit '''upd_smail''' script worden vóórdat de tabellen vanaf scratch worden opgebouwd, de 4 tabellen veilig gesteld in een backup directory. Het uitgangspunt is hier dat de database de echte waarheid is en de bronbestanden achter kunnen lopen. Terugladen van de oude tabellen is dan toch mogelijk en kunnen de bronbestanden bijgewerkt worden.
Dit script is het overkoepelende script dat alle '''dump_*''' en '''gen_*''' scripts uitvoert en mysql aanroept om de database te laden. '''upd_smail''' op zijn beurt wordt weer door '''upd_all''' aangeroepen. In dit '''upd_smail''' script worden vóórdat de tabellen vanaf scratch worden opgebouwd, de 4 tabellen veilig gesteld in een backup directory. Tevens worden tekst bestanden aangemaakt van die delen van de database die met de hand veranderd kunnen zijn. Het uitgangspunt is hier dat de database de echte waarheid is en de bronbestanden achter kunnen lopen.  
Per tabel worden de SQL header files samengevoegd met de output van de verschillende gen_* scripts. Tenslotte wordt een SQL footer toegevoegd, vaak alleen om de SQL te beëindigen met een ''';'''. Daarna wordt de tabel in MySQL aangemaakt en de data geladen. De  
 
tabellen worden dus in z'n geheel vervangen. Als laatste wordt een soort van alias bestand voor Roundcube gemaakt. Hieronder de complete '''upd_smail''':
Het '''all_domains.txt''' bestand bevat de domeinen waar HCC voor betaalt aan SIDN. Ook de benodigde speciale subdomeinen staan in het all_domains.txt bestand.  
 
Per tabel worden de SQL header files samengevoegd met de output van de verschillende gen_* scripts. Tenslotte wordt een SQL footer toegevoegd, vaak alleen om de SQL te beëindigen met een ''';'''. Daarna wordt de tabel in MySQL aangemaakt en de data geladen. De  
tabellen worden dus in z'n geheel vervangen. Als laatste wordt een soort van '''virtalias''' bestand voor Roundcube gemaakt. Hieronder de complete '''upd_smail''' (slechts als referentie, kijk altijd naar het script op de server zelf):
<pre>
<pre>
#!/bin/sh
#!/bin/sh
#
# $Id: /usr/local/hobbynet/bin/upd_smail $
#
# Driver voor alle subtaken dump... en gen....
#
# usage: ./upd_smail
#
#


Line 27: Line 45:
HNET_BCK=$HNET/lib/backup
HNET_BCK=$HNET/lib/backup
HNET_LDR=$HNET/lib/loader
HNET_LDR=$HNET/lib/loader
ID=$(date +"%Y%m%d-%H%M%S")


cd $HNET_LIB
cd $HNET_LIB


echo $1
#
#
# save all 4 tables with unique name
# save all 4 tables with unique name
#
#
mysqldump -u postfixadmin -pvFSQiD7uRyaF -c postfixadmin mailbox >$HNET_BCK/mailbox_$(date +"%Y%m%d-%H%M%S").sql
mysqldump -u postfixadmin -ppassword -c postfixadmin mailbox >$HNET_BCK/mailbox_$ID.sql
mysqldump -u postfixadmin -pvFSQiD7uRyaF -c postfixadmin alias >$HNET_BCK/alias_$(date +"%Y%m%d-%H%M%S").sql
mysqldump -u postfixadmin -ppassword -c postfixadmin alias >$HNET_BCK/alias_$ID.sql
mysqldump -u postfixadmin -pvFSQiD7uRyaF -c postfixadmin domain >$HNET_BCK/domain_$(date +"%Y%m%d-%H%M%S").sql
mysqldump -u postfixadmin -ppassword -c postfixadmin domain >$HNET_BCK/domain_$ID.sql
mysqldump -u postfixadmin -pvFSQiD7uRyaF -c postfixadmin alias_domain >$HNET_BCK/alias_domain_$(date +"%Y%m%d-%H%M%S").sql
mysqldump -u postfixadmin -ppassword -c postfixadmin alias_domain >$HNET_BCK/alias_domain_$ID.sql
#
# save extra mailboxes
#
echo "Saving extra mailboxess..."
cp $HNET_LIB/extra_mailboxes.txt $HNET_BCK/extra_mailboxes_$ID.txt
$HNET_BIN/dump_extra_mailboxes | sort >$HNET_LIB/extra_mailboxes.txt
#
# save scouthout aliases
#
echo "Saving scouthout aliases..."
cp $HNET_LIB/scouthout_aliases.txt $HNET_BCK/scouthout_aliases_$ID.txt
$HNET_BIN/dump_scouthout_aliases | sort >$HNET_LIB/scouthout_aliases.txt
#
# save new and extra aliases
#
echo "Saving new and extra aliases..."
cp $HNET_LIB/extra_aliases.txt $HNET_BCK/extra_aliases_$ID.txt
$HNET_BIN/dump_extra_aliases | sort >$HNET_LIB/extra_aliases.txt
#
# save hcc and other domains
#
echo "Saving hcc and other domains..."
cp $HNET_LIB/all_domains.txt $HNET_BCK/all_domains_$ID.txt
$HNET_BIN/dump_all_domains | sort >$HNET_LIB/all_domains.txt
#
# save new and extra domain_aliases
#
echo "Saving new and extra domain_aliases..."
cp $HNET_LIB/extra_alias_domains.txt $HNET_BCK/extra_alias_domains_$ID.txt
$HNET_BIN/dump_extra_alias_domains | sort >$HNET_LIB/extra_alias_domains.txt
#
# prepare emergency backup procedure (here-doecument)
#
cat > $HNET_BCK/restore_$ID <<END
#!/bin/bash
mysql -u postfixadmin -ppassword -c postfixadmin <$HNET_BCK/mailbox_$ID.sql
mysql -u postfixadmin -ppassword -c postfixadmin <$HNET_BCK/alias_$ID.sql
mysql -u postfixadmin -ppassword -c postfixadmin <$HNET_BCK/domain_$ID.sql
mysql -u postfixadmin -ppassword -c postfixadmin <$HNET_BCK/alias_domain_$ID.sql
cp $HNET_BCK/extra_mailboxes_$ID.txt $HNET_LIB/extra_mailboxes.txt
cp $HNET_BCK/scouthout_aliases_$ID.txt $HNET_LIB/scouthout_aliases.txt
cp $HNET_BCK/extra_aliases_$ID.txt $HNET_LIB/extra_aliases.txt
cp $HNET_BCK/all_domains_$ID.txt $HNET_LIB/all_domains.txt
cp $HNET_BCK/extra_alias_domains_$ID.txt $HNET_LIB/extra_alias_domains.txt
END
chmod 755 $HNET_BCK/restore_$ID
#
#
# build all 4 tables from input files
# build all 4 tables from input files
Line 44: Line 109:
cp $HNET_LIB/mailbox_header.tmpl $HNET_LDR/mailbox.sql
cp $HNET_LIB/mailbox_header.tmpl $HNET_LDR/mailbox.sql
$HNET_BIN/gen_mailbox >> $HNET_LDR/mailbox.sql
$HNET_BIN/gen_mailbox >> $HNET_LDR/mailbox.sql
$HNET_BIN/gen_mailbox2 >> $HNET_LDR/mailbox.sql
$HNET_BIN/gen_mailbox2 | sort | uniq >> $HNET_LDR/mailbox.sql
$HNET_BIN/gen_extra_mailbox >> $HNET_LDR/mailbox.sql
cat $HNET_LIB/mailbox_footer.tmpl >> $HNET_LDR/mailbox.sql
cat $HNET_LIB/mailbox_footer.tmpl >> $HNET_LDR/mailbox.sql
$CHMOD 644 $HNET_LDR/mailbox.sql
$CHMOD 644 $HNET_LDR/mailbox.sql
$CHOWN root:root $HNET_LDR/mailbox.sql
$CHOWN root:root $HNET_LDR/mailbox.sql
mysql -u postfixadmin -pvFSQiD7uRyaF postfixadmin <$HNET_LDR/mailbox.sql
mysql -u postfixadmin -ppassword postfixadmin <$HNET_LDR/mailbox.sql
#
#
echo "Building alias table for Hobbynet/Kadernet..."
echo "Building alias table for Hobbynet/Kadernet..."
Line 55: Line 121:
$HNET_BIN/gen_fff_hobbynet_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_fff_hobbynet_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_fff_www_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_fff_www_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_hobbynet_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_extra_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_scouthout_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_scouthout_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_alias2 >> $HNET_LDR/alias.sql
$HNET_BIN/gen_alias2 | sort | uniq >> $HNET_LDR/alias.sql
$HNET_BIN/gen_func_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_func_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_best_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_best_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_webm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_webm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_kernl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_kernl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_kadernet_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_group_alias | sort | uniq >> $HNET_LDR/alias.sql
$HNET_BIN/gen_x_voorz_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_voorz_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_x_kernl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_kernl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_x_secr_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_secr_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_x_penm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_penm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_x_webm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_webm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_x_bestl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_bestl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_voorz_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_kernl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_secr_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_penm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_webm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_bestl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ledenraad_alias >> $HNET_LDR/alias.sql
# use temporary file with unique mail addresses
cut --delimiter="," --field=4 $HNET_LIB/kaderfunc.txt | sort | uniq > $HNET_LIB/kaderfunc-sorted.txt
$HNET_BIN/gen_fff_kadernet_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_fff_kadernet_alias >> $HNET_LDR/alias.sql
rm $HNET_LIB/kaderfunc-sorted.txt
#
cat $HNET_LIB/alias_footer.tmpl >> $HNET_LDR/alias.sql
cat $HNET_LIB/alias_footer.tmpl >> $HNET_LDR/alias.sql
$CHMOD 644 $HNET_LDR/alias.sql
$CHMOD 644 $HNET_LDR/alias.sql
$CHOWN root:root $HNET_LDR/alias.sql
$CHOWN root:root $HNET_LDR/alias.sql
mysql -u postfixadmin -pvFSQiD7uRyaF -c postfixadmin <$HNET_LDR/alias.sql
mysql -u postfixadmin -ppassword -c postfixadmin <$HNET_LDR/alias.sql
#
#
echo "Building domain table for Hobbynet/Kadernet..."
echo "Building domain table for Hobbynet/Kadernet..."
cp $HNET_LIB/domain_header.tmpl $HNET_LDR/domain.sql
cp $HNET_LIB/domain_header.tmpl $HNET_LDR/domain.sql
$HNET_BIN/gen_domain >> $HNET_LDR/domain.sql
$HNET_BIN/gen_domain >> $HNET_LDR/domain.sql
$HNET_BIN/gen_hobbynet_domain >> $HNET_LDR/domain.sql
$HNET_BIN/gen_all_domain >> $HNET_LDR/domain.sql
$HNET_BIN/gen_domain2 >> $HNET_LDR/domain.sql
$HNET_BIN/gen_domain2 >> $HNET_LDR/domain.sql
cat $HNET_LIB/domain_footer.tmpl >> $HNET_LDR/domain.sql
cat $HNET_LIB/domain_footer.tmpl >> $HNET_LDR/domain.sql
$CHMOD 644 $HNET_LDR/domain.sql
$CHMOD 644 $HNET_LDR/domain.sql
$CHOWN root:root $HNET_LDR/domain.sql
$CHOWN root:root $HNET_LDR/domain.sql
mysql -u postfixadmin -pvFSQiD7uRyaF postfixadmin <$HNET_LDR/domain.sql
mysql -u postfixadmin -ppassword postfixadmin <$HNET_LDR/domain.sql
#
#
echo "Building alias_domain table for Hobbynet/Kadernet..."
echo "Building alias_domain table for Hobbynet/Kadernet..."
cp $HNET_LIB/alias_domain_header.tmpl $HNET_LDR/alias_domain.sql
cp $HNET_LIB/alias_domain_header.tmpl $HNET_LDR/alias_domain.sql
$HNET_BIN/gen_alias_domain >> $HNET_LDR/alias_domain.sql
$HNET_BIN/gen_extra_alias_domain >> $HNET_LDR/alias_domain.sql
$HNET_BIN/gen_alias_domain2 >> $HNET_LDR/alias_domain.sql
$HNET_BIN/gen_alias_domain2 >> $HNET_LDR/alias_domain.sql
cat $HNET_LIB/alias_domain_footer.tmpl >> $HNET_LDR/alias_domain.sql
cat $HNET_LIB/alias_domain_footer.tmpl >> $HNET_LDR/alias_domain.sql
$CHMOD 644 $HNET_LDR/alias_domain.sql
$CHMOD 644 $HNET_LDR/alias_domain.sql
$CHOWN root:root $HNET_LDR/alias_domain.sql
$CHOWN root:root $HNET_LDR/alias_domain.sql
mysql -u postfixadmin -pvFSQiD7uRyaF postfixadmin <$HNET_LDR/alias_domain.sql
mysql -u postfixadmin -ppassword postfixadmin <$HNET_LDR/alias_domain.sql
#
#
echo ""
echo ""
Line 100: Line 177:
$CHMOD 644 $HNET_LIB/systemusers
$CHMOD 644 $HNET_LIB/systemusers
$CHOWN root:root $HNET_LIB/systemusers
$CHOWN root:root $HNET_LIB/systemusers
#
echo ""
echo "Dumping transport for mail-dev..."
$HNET_BIN/dump_transport >$HNET_LIB/transport
cp /etc/postfix/transport /etc/postfix/transport.old
cp $HNET_LIB/transport /etc/postfix/transport
postmap /etc/postfix/transport
#
echo "Dumping relay_recipients for mail-dev..."
$HNET_BIN/dump_relay_recipients >$HNET_LIB/relay_recipients
cp /etc/postfix/relay_recipients /etc/postfix/relay_recipients.old
cp $HNET_LIB/relay_recipients /etc/postfix/relay_recipients
postmap /etc/postfix/relay_recipients
#
echo "Dumping relay_domains for mail2..."
$HNET_BIN/dump_mail2_domains >$HNET_LIB/relay_domains
#
# EOF
#
</pre>
</pre>


==De Mailboxen==
== Conversie van data naar tekst bestanden==
Wat ooit gestart is al met de hand beheerde tekst bestanden, is vervangen door bestanden gemaakt uit de PFA database. Omdat alle updates m.b.v. PFA gemaakt worden, zijn die gegevens nieuwer. Door die eerst te dumpen en daarna weer te gebruiken als bron bestand blijven wijzigingen bewaard.
===dump_all_domains===
Maakt een tekst bestand in '''all_domains.txt''' van de alle domeinen in de domain tabel.
===dump_extra_alias_domains===
Maakt een tekst bestand '''extra_alias_domains.txt''' uit de '''alias_domain''' tabel.
===dump_extra_aliases===
Maakt een tekst bestand '''extra_aliases.txt''' uit de '''alias''' tabel.
===dump_extra_mailboxes===
Maakt een tekst bestand '''extra_mailboxes.txt''' uit de '''mailbox''' tabel.
===dump_mail2_domains===
Maakt een tekst bestand '''relay_domains''' uit de '''domain''' tabel voor gebruik op '''mail2'''.
===dump_relay_recipients===
Maakt een tekst bestand '''relay_recipients''' aan voor Postfix. Dit bestand moet naar /etc/postfix op mail-dev gekopieerd worden en er moet een postmap op uitgevoerd worden.
===dump_scouthout_aliases===
Maakt een tekst bestand '''scouthout_aliases.txt''' uit de '''alias''' tabel.
===dump_transport===
Maakt een tekst bestand '''transport''' aan voor Postfix. Dit bestand moet naar /etc/postfix gekopieerd worden en er moet een postmap op uitgevoerd worden.
 
==Genereren van de mailboxen==
Alle (ook virtuele) gebruikers waarvoor mail-dev eindstation is voor email, hebben een home directory en een mailbox in een mail directory op dit systeem. Zowel HCC!Hobbynet als de HCC!Kadernet leden hebben allemaal een mailbox met Maildir structuur in /disk/mail/vmail/<domain>/<user>/Maildir/.
Alle (ook virtuele) gebruikers waarvoor mail-dev eindstation is voor email, hebben een home directory en een mailbox in een mail directory op dit systeem. Zowel HCC!Hobbynet als de HCC!Kadernet leden hebben allemaal een mailbox met Maildir structuur in /disk/mail/vmail/<domain>/<user>/Maildir/.


===gen_mailbox===
===gen_mailbox===
Dit script maakt de hobbynet mailbox informatie aan. Ook worden salted MD5 passwords gegenereerd aan de hand van de passwords in husers.  Hiervoor wordt de perl module '''unix_md5_crypt''' gebruikt en een kleine subroutine om het salt te genereren. Bij elke run van gen_mailbox worden deze strings anders maar ze blijven een match geven met het password. De mailbox naam is '''altijd''' <contact>@<systeem>.hobby.nl voor hobbynetleden. Het domein is altijd '''<systeem>.hobby.nl'''.
Dit script maakt de '''hobbynet''' mailbox informatie aan. De passwords zijn afkomstig uit ldap op hcc-ldap-lb1. De mailbox naam was '''altijd''' <contact>@<systeem>.hobby.nl voor hobbynetleden. Het domein is altijd '''<systeem>.hobby.nl'''. Het '''type''' attribute in ldap wordt ook bewaard in de mailbox db tabel.
<br>
LET OP! Als er mailboxen zijn bijgemaakt via PostfixAdmin, zullen die verloren gaan bij een rebuild van de mailbox tabel! Stel de tabellen veilig door een export te doen of een backup als superadmin. Een dergelijk script voor scouthout.nl (gebruikt als proefdomein) mailboxen bestaat al.


===gen_mailbox2===
===gen_mailbox2===
Dit script maakt de kadernet mailbox informatie aan. Ook worden salted MD5 passwords gegenereerd aan de hand van de passwords in husers.  Hiervoor wordt de perl module '''unix_md5_crypt''' gebruikt en een kleine subroutine om het salt te genereren. Bij elke run van gen_mailbox2 worden deze strings anders maar ze blijven een match geven met het password. De mailbox naam is '''altijd''' <lidnummer>@kader.hcc.nl voor kaderleden. Het domein voor kaderleden is dus altijd '''kader.hcc.nl'''.
Dit script maakt de '''kadernet''' mailbox informatie aan. De mailbox naam is '''altijd''' <lidnummer>@kader.hcc.nl voor kaderleden. Het domein voor kaderleden is dus altijd '''kader.hcc.nl'''.
 
===gen_extra_mailbox===
Dit script maakt mailboxen aan die niet uit de andere bronnen te herleiden zijn. De mailboxen krijgen type 9.


==Aliases==
==Genereren van de aliases==
Email die op een domein op mail-dev wordt afgeleverd om direct weer verder gestuurd te worden heeft geen mailbox nodig. Voorbeeld hiervan is scouhout.nl. Alle email adressen expanderen via '''aliases''' naar een of meer externe adressen. Mail-dev fungeert hiervoor dus als mailrelay. Aliases zijn ook nodig voor functionele email adressen van kadernet functies zoals voorzitter, secretaris, enz. Ook zijn er adressen nodig voor grotere groepen ten bate van het kantoor zodat ze alle penningmeesters tegelijk kunnen emailen. De alias tabel wordt dus vrij groot. Er zijn weer meerdere kleine scripts die de tabellen vullen.
Email die op een domein op mail-dev wordt afgeleverd om direct weer verder gestuurd te worden heeft geen mailbox nodig. Voorbeeld hiervan is scouthout.nl. Alle email adressen expanderen via '''aliases''' naar een of meer externe adressen. Mail-dev fungeert hiervoor dus als mailrelay. Aliases zijn ook nodig voor functionele email adressen van kadernet functies zoals voorzitter, secretaris, enz. Ook zijn er adressen nodig voor grotere groepen ten bate van het kantoor zodat ze alle penningmeesters tegelijk kunnen mailen. De alias tabel wordt dus vrij groot. Er zijn weer meerdere kleine scripts die de tabellen vullen.


===gen_alias===
===gen_alias===
Dit script genereert alle hobbynet aliases die uit husers gemaakt kunnen worden. Voor de hobbynetleden wordt een alias gemaakt met de naam van de gebruiker in de '''alias''' tabel. Er komt dus een '''<contact>@<systeem>.hobby.nl''' die naar de mailbox '''<contact>@<systeem>.hobby.nl''' wijst. De '''alias''' tabel is zichtbaar in PostfixAdmin. De alias tabel kan beheerd worden met PostfixAdmin. Via phpmyadmin op dbadmin.hobby.nl kunnen natuurlijk alle tabellen in de database postfixadmin benaderd worden, mocht dit nodig zijn.
Dit script genereert alle '''hobbynet''' aliases die uit hobbyabon.txt gemaakt kunnen worden. Voor de hobbynetleden wordt een alias gemaakt met de naam van de gebruiker in de '''alias''' tabel. Er komt dus een '''<contact>@<systeem>.hobby.nl''' die naar de mailbox '''<contact>@<systeem>.hobby.nl''' wijst. De '''alias''' tabel is zichtbaar in PostfixAdmin. De alias tabel kan beheerd worden met PostfixAdmin. Via phpmyadmin op dbadmin.hobby.nl kunnen natuurlijk alle tabellen in de database postfixadmin benaderd worden, mocht dit nodig zijn.
 
Om het mogelijk te maken voor een hobbynet lid de Hobbynet mail ergens anders af te leveren, is de scripting aangepast (vbs20200416). Het mail veld in ou=users bepaald of er een mailbox wordt gemaakt os dat er forwarding wordt gedaan. Zie [[Hobbynet mail forwarding]] voor meer uitleg.


===gen_fff_hobbynet_alias===
===gen_fff_hobbynet_alias===
Dit script genereert de '''fff_hnet@hobby.nl''' alias door uit husers het emailadres te halen van leden met code 0,1,2,3 te halen.
Dit script genereert de '''fff_hnet@hobby.nl''' alias door uit hobbyabon.txt het emailadres van leden met code 0,1,2,3 te halen.


===gen_fff_www_alias===
===gen_fff_www_alias===
Dit script genereert de '''fff_www@hobby.nl''' alias door uit husers het emailadres te halen van dié leden die een website op een van de Hobbynet webservers hebben. Het is dus een subset van '''fff_hnet'''.
Dit script genereert de '''fff_www@hobby.nl''' alias door uit hobbyabon.txt het emailadres te halen van dié leden die een website op een van de Hobbynet webservers hebben. Het is dus een subset van '''fff_hnet'''.


===gen_hobbynet_alias===
===gen_extra_alias===
Dit script leest '''hobbynet_aliases.txt''' en genereert regels in de sql-loaderfile. He betreft aliases die niet eenvoudig af te leiden zijn uit husers maar wel te maken hebben met hobby.nl.
Dit script leest '''extra_aliases.txt''' en genereert regels in de sql-loaderfile. Het betreft aliases die niet eenvoudig af te leiden zijn uit hobbyabon.txt en kaderfunc.txt.


===gen_scouthout_alias===
===gen_scouthout_alias===
Dit script leest '''scouthout_aliases.txt''' en genereert regels in de sql-loaderfile. He betreft aliases die te maken hebben met scouthout.nl. Er is tevens een scriptje '''dump_scouthout_aliases''' dat scouthout_aliases.txt kan genereren uit de alias tabel. Dit kan nuttig zijn als er updates via PostfixAdmin zijn gedaan door de scouthout admin. Als er voor andere domeinen ook aliases bijkomen, moeten daar ook '''dump-*''' scripts voor gemaakt worden. Ook de backup van de db voldoet natuurlijk.
Dit script leest '''scouthout_aliases.txt''' en genereert regels in de sql-loaderfile. Het betreft aliases die te maken hebben met scouthout.nl. Er is tevens een scriptje '''dump_scouthout_aliases''' dat scouthout_aliases.txt kan genereren uit de alias tabel. Dit kan nuttig zijn als er updates via PostfixAdmin zijn gedaan door de scouthout admin.  


===gen_alias2===
===gen_alias2===
Dit script genereert alle kadernet aliases die uit husers gemaakt kunnen worden. Voor de kaderleden waar het domain nog '''kader.hobby.nl''' is, wordt dat vervangen door '''kader.hcc.nl'''. Er wordt een alias gemaakt die naar de mailbox wijst (met het lidnummer uit husers) en één met de HCC naam uit het in husers opgenomen email adres. Er komt dus een '''1234567@kader.hcc.nl''' en een '''a.b.c.janssen@kader.hcc.nl''' die weer beide naar de mailbox '''1234567@kader.hcc.nl''' verwijzen. De alias tabel kan beheerd worden met PostfixAdmin. Via phpmyadmin op dbadmin.hobby.nl kunnen natuurlijk alle tabellen in de database postfixadmin benaderd worden.
Dit script genereert alle '''kadernet''' aliases die uit kaderfunc.txt gemaakt kunnen worden. Voor de kaderleden waar het domain nog '''kader.hobby.nl''' is, wordt dat vervangen door '''kader.hcc.nl'''. Er wordt een alias gemaakt die naar de mailbox wijst (met het lidnummer uit kaderfunc.txt) en één met de HCC naam uit het in kaderfunc.txt opgenomen email adres. Er komt dus een '''1234567@kader.hcc.nl''' en een '''a.b.c.janssen@kader.hcc.nl''' die weer beide naar de mailbox '''1234567@kader.hcc.nl''' verwijzen. De alias tabel kan beheerd worden met PostfixAdmin. Via Phpmyadmin op dbadmin.hobby.nl kunnen natuurlijk ook alle tabellen in de database postfixadmin benaderd worden.


===gen_func_alias===
===gen_func_alias===
Dit script genereert alle functionele aliases voor elke groepering. Het maakt aliases aan voor '''voorzitter@<groepering>.hcc.nl''', '''secretaris@<groepering>.hcc.nl''' en '''penningmeester@<groepering>.hcc.nl'''. Tevens wordt '''info@<groepering>.hcc.nl''' gemaakt die ook naar secretaris@<groepering>.hcc.nl verwijst. Om aan backwards compatible te zijn is ook voorzien in aliases voor 'voorz', 'secr' en 'penm' die verwijzen naar de lange naam. Uit praktische overweging worden hier ook de rfc mailboxen gemaakt. abuse@.. verwijst naar abuse.hobby.nl.  
Dit script genereert alle functionele aliases voor elke groepering. Het maakt aliases aan voor '''voorzitter@<groepering>.hcc.nl''', '''secretaris@<groepering>.hcc.nl''' en '''penningmeester@<groepering>.hcc.nl'''. Tevens wordt '''info@<groepering>.hcc.nl''' gemaakt die ook naar secretaris@<groepering>.hcc.nl verwijst. De informatie wordt gehaald uit de kaderfunc.txt file.
 
Om backwards compatible te zijn is ook voorzien in aliases voor 'voorz', 'secr' en 'penm' die verwijzen naar de lange naam. Uit praktische overweging worden hier ook de rfc mailboxen gemaakt. abuse@.. verwijst naar abuse@hobby.nl.


===gen_best_alias===
===gen_best_alias===
Dit script genereert de '''bestuur''' alias voor elke groepering. Dus per groepering de voorzitter, secretaris, penningmeester en bestuursleden met als alias '''bestuur@<groepering>.hcc.nl'''. De informatie wordt gehaald uit de '''b3a.txt''' file. Die file wordt uit de kadertab.csv gemaakt. (Deze slag staat volledig los van deze scripts en wordt alleen gedraaid als er een nieuwe kadertab wordt aangeboden door het HCC kantoor). Sommige groeperingen zoals '''kantoor''' wordt overgeslagen. Er is geen '''bestuur@kantoor.hcc.nl'''...
Dit script genereert de '''bestuur''' alias voor elke groepering. Dus per groepering de voorzitter, secretaris, penningmeester en bestuursleden met als alias '''bestuur@<groepering>.hcc.nl'''. De informatie wordt weer gehaald uit de '''kaderfunc.txt''' file. Sommige groeperingen zoals '''hobby-computer-club''' wordt overgeslagen. Er is geen '''bestuur@hobby-computer-club.hcc.nl'''...


===gen_webm_alias===
===gen_webm_alias===
Voor de webmasters is een apart script gemaakt omdat er variabel aantal webmasters per groepering kan zijn. Bron bestand is weer b3a.txt. Dit script genereert de '''webmaster@<groepering>.hcc.nl''' alias die een variabel aantal target mailboxen kent. Ook wordt altijd de secretaris toegevoegd. In het geval dat er helemaal géén webmaster is aangemeld komt de mail dus tenminste in de mailbox van de secretaris. Bron bestand is natuurlijk weer b3a.txt.
Voor de webmasters is een apart script gemaakt omdat er een variabel aantal webmasters per groepering kan zijn. Bron bestand is weer kaderfunc.txt. Dit script genereert de '''webmaster@<groepering>.hcc.nl''' alias die een variabel aantal target mailboxen kent. Ook wordt altijd de secretaris toegevoegd. In het geval dat er helemaal géén webmaster is aangemeld komt de mail dus tenminste in de mailbox van de secretaris ''(is dit nog zo?)''. Bron bestand is natuurlijk weer kaderfunc.txt.
 
===gen_kernl_alias===
Voor de kernleden is een apart script gemaakt omdat er een variabel aantal kernleden per groepering kan zijn. Bron bestand is weer kaderfunc.txt. Dit script genereert de '''kernleden@<groepering>.hcc.nl''' alias die een variabel aantal target mailboxen kent.


===gen_kadernet_alias===
===gen_kadernet_alias===
Dit script leest kadernet_aliases.txt en genereert de SQL regels voor speciale kadernet aliases die niet uit b3a gemaakt kunnen worden.
Dit script leest kadernet_aliases.txt en genereert de SQL regels voor speciale kadernet aliases die niet uit kaderfunc.txt gemaakt kunnen worden.
 
===gen_ig_<func>_alias===
Deze scripts genereren een alias die alle voorzitters, secretarissen, penningmeesters, webmasters, gewone bestuursleden en kernleden van interessegroepen (vroeger gebruikersgroep) als target hebben. Deze aliasen worden zelden gebruikt, maar voorzien erin om alle penningmeesters uit te nodigen voor een penm. overleg. De script zijn nagenoeg identiek. Zoals altijd zijn de target adressen mailboxen (herkenbaar aan het lidnummer). Bron bestand is kaderfunc.txt.<br>
Op verzoek van het Kantoor worden enkele key-personen in de alias gezet. Deze personen dienen in de alias '''kantoor@kader.hcc.nl''' (in extra_aliases.txt) gezet te worden om in de '''ig_''' alias te komen.
 
===gen_regio_<func>_alias===
Deze scripts genereren een alias die alle voorzitters, secretarissen, penningmeesters, webmasters, gewone bestuursleden en kernleden van regio's (vroeger afdeling) als target hebben. Deze aliasen worden zelden gebruikt, maar voorzien erin om alle penningmeesters uit te nodigen voor een penm. overleg. De script zijn nagenoeg identiek. Zoals altijd zijn de target adressen mailboxen (herkenbaar aan het lidnummer). Bron bestand is kaderfunc.txt.<br>
Op verzoek van het Kantoor worden enkele key-personen in de alias gezet. Deze personen dienen in de alias '''kantoor@kader.hcc.nl''' (in extra_aliases.txt) gezet te worden om in de '''regio_''' alias te komen. Deze aliases zijn weer gecombineerd tot grotere groepen.
<pre>
Alle voorz, secr, penm, enz van ig's:
ig_voorz@kader.hcc.nl
ig_secr@kader.hcc.nl
ig_penm@kader.hcc.nl
ig_bestl@kader.hcc.nl
ig_kernl@kader.hcc.nl
ig_webm@kader.hcc.nl
 
Alle voorz, secr, penm, enz van regio's
regio_voorz@kader.hcc.nl
regio_secr@kader.hcc.nl
regio_penm@kader.hcc.nl
regio_bestl@kader.hcc.nl
regio_kernl@kader.hcc.nl
regio_webm@kader.hcc.nl
 
Alle voorzitters, secr, enz:
fff_voorz@kader.hcc.nl (ig_voorz@kader.hcc.nl en regio_voorz@kader.hcc.nl samen)
fff_secr@kader.hcc.nl (alle secretarissen)
fff_penm@kader.hcc.nl
fff_bestl@kader.hcc.nl
fff_kernl@kader.hcc.nl
fff_webm@kader.hcc.nl
 
Alle bestuursleden van resp. ig's en regio's:
fff_ig_bestuur@kader.hcc.nl (ig_voorz, ig_secr, ig_penm en ig_bestl@kader.hcc.nl samen)
fff_regio_bestuur@kader.hcc.nl (regio_voorz, regio_secr, regio_penm en regio_bestl@kader.hcc.nl samen)
 
Alle bestuursleden:
fff_bestuur@kader.hcc.nl (de 4 ig_<func> en de 4 regio_<func> samen)
Alle kaderleden:
fff_kader@kader.hcc.nl (ALLE kaderleden samen, dus besturen maar nu ook met de kernleden en webmasters)
</pre>


===gen_x_<func>_alias===
===gen_sr_presentatoren en gen_sr_regio_coordinatoren_alias===
Deze scripts genereren een alias die alle voorzitters, secretarissen, penningmeesters, webmasters, gewone bestuursleden en kernleden als target hebben. Deze aliases worden zelden gebruikt, maar voorzien erin om alle penningmeesters uit te nodigen voor een penm. overleg. De script zijn nagenoeg identiek. Zoals altijd zijn de target adressen mailboxen (herkenbaar aan het lidnummer). Bron bestand is b3a.txt.
Deze twee scripts genereren de aliases voor de regio_coordinatoren en presentatoren van de SeniorenAcademie (SR). Voor deze functionarissen is een virtuele IG gemaakt (SR-Ambassadeurs) omdat niet alle functionarissen lid zijn van SR. Indelen bij de regio was een optie maar dan liggen er problemen op de loer met verhuizingen.<br>
'''PAS OP''': deze scripts bevatten hard gecodeerde waarden!


===gen_fff_kadernet_alias===
===gen_fff_kadernet_alias===
Dit script genereert de '''fff_kader@kader.hcc.nl''' en '''fff_bestuur@kader.hcc.nl''' aliases. Voor de eerste wordt husers gebruikt (code 5); de tweede is slechts een alias naar x_voorz, x_secr, x_penm, x_bestl. Beide aliases bevatten ook email adressen van mensen op kantoor in Haarlem. Deze zijn hardcoded in het script.
Dit script genereert de '''fff_kader@kader.hcc.nl'''. Hiervoor wordt kaderfunc.txt gebruikt (code 5).<br>
Op verzoek van het Kantoor worden enkele kantoor functies in de alias gezet. Deze personen dienen in de alias '''kantoor@kader.hcc.nl''' (in extra_aliases.txt) gezet te worden om in de '''fff_''' aliases te komen.


==Domains==
==Genereren van de domains==
Postfix kan op één server de email voor vele domeinen afhandelen. Om ongewenst relayeren (spam!) te voorkomen moeten de domeinen van de geadresseerden gecheckt kunnen worden.  
Postfix kan de email voor vele domeinen afhandelen. Om ongewenst relayeren (spam!) te voorkomen moeten de domeinen van de geadresseerden gecheckt kunnen worden.  


===gen_domain===
===gen_domain===
Dit script genereert de hobbynet domeinen voor de domeinen in husers voor de tabel '''domain'''. Ook hier geldt weer dat de '''domain''' tabel beheerbaar is in PostfixAdmin.
Dit script genereert de hobbynet domeinen voor de domeinen in hobbyabon.txt voor de tabel '''domain'''. Ook hier geldt weer dat de '''domain''' tabel beheerbaar is in PostfixAdmin.


===gen_hobbynet_domain===
===gen_all_domain===
Het bronbestand voor gen_hobbynet_domain is '''dusers'''. Dit bestand is nog in ontwikkeling en moet allerlei gegevens van de beheerde domeinen gaan bevatten. Het bestand heeft een vergelijkbare status als '''husers'''. Het bronbestand moet met de hand bijgehouden worden maar daar het niet vaak veranderd (alleen bij wijzigingen in de gehoste domeinen) is dat goed te doen.
Het bronbestand voor gen_all_domain is '''all_domains.txt'''. Het script '''gen_all_domain''' voegt records toe aan de domain tabel die betrekking hebben op alle beheerde domeinen. Dit zijn b.v. hccm.nl en hcc-watersport.nl maar weer NIET modelbaan-gg.hcc.nl. Die laatste wordt door gen_domain2 aangemaakt.


Het script '''gen_hobbynet_domain''' voegt records toe aan de domain tabel die betrekking hebben op de door HCC!Hobbynet beheerde domeinen. Dit zijn b.v. hccm.nl en hcc-watersport.nl maar weer NIET modelbaan-gg.hcc.nl. Die laatste wordt door gen_domain2 aangemaakt.
===gen_domain2===
Dit script genereert de kadernet domeinen. Voor kadernet wordt '''kader.hobby.nl''' vervangen door '''kader.hcc.nl'''. Ook hier geldt weer dat de '''domain''' tabel beheerbaar is in PostfixAdmin. Er worden domeinen gemaakt zonder de '''afd-''' of '''-gg''' en met '''regio-''' i.p.v. '''afd-''' en '''-ig''' i.p.v. '''-gg'''.


Ook worden uit een platte tekst file de (met de hand beheerde) alias_domains toegevoegd. De layout van de tekst file is simpel: alias_domain, target_domain. Voorbeeld:
==Genereren van de alias-domains==
Postfix kent een z.g. alias_domain. Dit is een domeinnaam die een alias is voor een andere domeinnaam. Alle email adressen in het originele domein komen 1 op 1 voor in het alias domein.
===gen_extra_alias_domain===
Dit script leest '''extra_alias_domains.txt''' en genereert SQL regels voor de tabel alias_domain
 
De layout van de tekst file is simpel: alias_domain, target_domain. Voorbeeld:
  # list of alias_domains
  # list of alias_domains
  # mirror.tld,target.tld
  # mirror.tld,target.tld
Line 172: Line 347:
  hcc-clan.nl:games-gg.hcc.nl
  hcc-clan.nl:games-gg.hcc.nl


Opm: Het alias_domain '''modelbaan.hcc.nl''' wordt automatisch gegenereerd (door -gg/afd-/cg- weg te laten) en mag dus NIET in de platte tekst file staan.
'''Opm''': De automatisch gegenereerde HCC domeinnamen (ontstaan door -gg/afd-/cg- weg te laten) mogen dus NIET in de platte tekst file staan.
 
===gen_domain2===
Dit script genereert de kadernet domeinen. Voor kadernet wordt '''kader.hobby.nl''' vervangen door '''kader.hcc.nl'''. Ook hier geldt weer dat de '''domain''' tabel beheerbaar is in PostfixAdmin.
 
==Alias-domains==
Postfix kent een z.g. alias_domain. Dit is een domeinnaam die een alias is voor een andere domeinnaam. Alle email adressen in het originele domein komen 1 op 1 voor in het alias domein.
===gen_alias_domain===
Dit script leest '''hobbynet_alias_domains.txt''' en genereert SQL regels voor de tabel alias_domain


===gen_alias_domain2===
===gen_alias_domain2===
Dit script genereert alle HCC afdeling en ig domeinen mar dan zonder de '''afd-''' prefix en '''-gg''' suffix. Tevens wordt '''kadernet_alias_domains.txt''' gelezen en voegt eventuele afwijkende alias_domains toe.
Dit script genereert alle HCC afdeling en ig domeinen maar dan zonder de '''afd-''' prefix en '''-gg''' suffix. Input is kaderfunc.txt.


==Systemusers==
==Systemusers==
Het upd_smail script genereert tevens een soor virtualusers bestand voor Roundcube. Om de kaderleden in staat te stellen met slechts hun lidnummer in te loggen op webmail is er een default domein '''kader.hcc.nl''' gedefinieerd. Als iemand zonder domein inlogt, wordt '''@kader.hcc.nl''' toegevoegd. Dit levert echter een probleem op voor de systeem users die in de passwd file staan en door Dovecot daar ook gevonden worden. Die hebben helemaal geen domein aan hun usernaam. Door fake entries op te nemen met <systeemuser>@kader.hcc.nl en een alias '''zonder ''' domein kunnen die toch inloggen op het webinterface. De laatste groep zijn de hobbynet users die vanouds met S<systeem> konden inloggen. Voor hen wordt ook een fake entry gemaakt met S<systeem>@kader.hcc.nl met als alias het opgegeven email adres. Voor dit email adres is eerder een mailbox aangemaakt.
Het upd_smail script genereert tevens een soor virtualusers bestand voor Roundcube. Om de kaderleden in staat te stellen met slechts hun lidnummer in te loggen op webmail is er een default domein '''kader.hcc.nl''' gedefinieerd. Als iemand zonder domein inlogt, wordt '''@kader.hcc.nl''' toegevoegd. Door fake entries op te nemen met <systeemuser>@kader.hcc.nl en een alias '''zonder ''' domein kunnen die toch inloggen op het webinterface. De laatste groep zijn de hobbynet users die vanouds met S<systeem> konden inloggen. Voor hen wordt ook een fake entry gemaakt met S<systeem>@kader.hcc.nl met als alias het opgegeven email adres. Voor dit email adres is eerder een mailbox aangemaakt.
<br><br>
<br><br>
De beschreven faciliteit bestaat alleen voor het Roundcube web email interface. Pop3 en imap clients moeten, behalve voor syeteemusers, altijd een domein meegeven!
De beschreven faciliteit bestaat alleen voor het Roundcube web email interface. Pop3 en imap clients moeten, behalve voor systeemusers, altijd een domein meegeven!
 
==Extra scripts==
==Extra scripts==
Er zijn in de ../lib directory nog een paar scripts die niet in upd_smail gebruikt worden. Er zijn een aantal '''dump_*''' scripts die o.a. de scouthout aliases in het formaat van de scouthout_aliases.txt dumpen. door die dump te redirecten naar ../lib/scouthout_aliases.txt.new (ofzo), is snel met diff te zien of er tussentijdse wijzigingen zijn geweest. Zoja, dan moet het oude scouthout_aliases bestand door het nieuwe bestand vervangen worden.
L8er...
 
Terug naar [[EMAIL]]

Latest revision as of 11:49, 18 April 2020

Introductie

De scripting is er op gericht een aantal tabellen te vullen in de postfixadmin database. De tabellen zijn in eerste instantie helemaal standaard gehouden zoals postfixadmin ze aanmaakt bij de installatie. Postfixadmin kan worden gebruikt om veranderingen in de data aan te brengen. Later zijn enkele velden toegevoegd voor het specifieke gebruik binnen Hobbynet. Voornamelijk om het creëren van tekst bestanden als bron bestanden aan te maken.

Proces

Het hele proces is gericht op het behoud van (mogelijk gewijzigde) data. In de aanloop fase werden de platte tekst bestanden met de hand bijgehouden waarna de database tabellen gegenereerd werden. In de test fase werden de uit de database gemaakte tekst bestanden vergeleken met de originele bestanden. In de productie fase zijn er geen originele tekst bestanden meer; de vorige versie wordt veilig gesteld en daarna vervangen door de verse dump uit de database. Op die wijze worden nieuwe records meegenomen die met PostfixAdmin in de database zijn gemaakt. De laatst bekende data in de database wordt namelijk eerst gedumpt naar tekst bestanden, die vervolgens weer worden gebruikt om de database te laden. De externe bestanden hobbyabon.txt (was husers) en kaderfunc.txt (was b3a.txt) zijn hier een uitzondering op; die worden nooit overschreven maar door het script upd_mailserver op de LDAP server geplaatst. upd_smail op de mailserver doet de rest.
Zie ook de pagina bronbestanden.

Locatie van de bestanden

De bron bestanden: kaderfunc.txt, hobbyabon.txt staan in de data directory (via scp van hcc-ldap-lb1 afkomstig), extra_alias_domains.txt, extra_aliases.txt, scouthout_aliases.txt en de _header/_footer bestanden (.tmpl) staan ook in /usr/local/hobbynet/data directory.

De scripts staan in /usr/local/hobbynet/local. De backups van de database en tekst bestanden komen in /usr/local/hobbynet/data/backup terecht. De door de scripts gegenereerde MySQL bestanden komen in /usr/local/hobbynet/data/loader.

De bestanden in de backup directory moeten geregeld opgeruimd worden; er zit geen limiet op het aantal versies. In de backup directory staat ook een script om een versie van een bepaalde datum/tijd snel terug te zetten waarna upd_smail de database herlaadt.

Scripts

De (perl) scripts zijn bewust kort en simpel gehouden om ze zo modulair mogelijk te maken. De tactiek is telkens hetzelfde: bij elk te maken SQL loader bestand is er een header, tussenliggende gelijksoortige data regels en een footer te onderscheiden.

  • De header is alle tekst die door een MySQL dump gemaakt wordt (met een delete-if-exists erin), tot en met de eerste SQL regel: INSERT INTO...VALUES.
  • De diverse scripts voegen de tussenliggende data regels toe.
  • De footer is gewoonlijk een laatste data regel maar dan eindigend op ; in plaats van , en de afsluitende regels van de dump.

Een dergelijk SQL loader bestand is zonder meer terug te laden in MySQL. De tabel wordt eerst weggegooid en wordt daarna opnieuw aangemaakt.

upd_smail

Dit script is het overkoepelende script dat alle dump_* en gen_* scripts uitvoert en mysql aanroept om de database te laden. upd_smail op zijn beurt wordt weer door upd_all aangeroepen. In dit upd_smail script worden vóórdat de tabellen vanaf scratch worden opgebouwd, de 4 tabellen veilig gesteld in een backup directory. Tevens worden tekst bestanden aangemaakt van die delen van de database die met de hand veranderd kunnen zijn. Het uitgangspunt is hier dat de database de echte waarheid is en de bronbestanden achter kunnen lopen.

Het all_domains.txt bestand bevat de domeinen waar HCC voor betaalt aan SIDN. Ook de benodigde speciale subdomeinen staan in het all_domains.txt bestand.

Per tabel worden de SQL header files samengevoegd met de output van de verschillende gen_* scripts. Tenslotte wordt een SQL footer toegevoegd, vaak alleen om de SQL te beëindigen met een ;. Daarna wordt de tabel in MySQL aangemaakt en de data geladen. De tabellen worden dus in z'n geheel vervangen. Als laatste wordt een soort van virtalias bestand voor Roundcube gemaakt. Hieronder de complete upd_smail (slechts als referentie, kijk altijd naar het script op de server zelf):

#!/bin/sh
#
# $Id: /usr/local/hobbynet/bin/upd_smail $
#
# Driver voor alle subtaken dump... en gen....
#
# usage: ./upd_smail
#

CHOWN=/bin/chown
CHMOD=/bin/chmod

HNET=/usr/local/hobbynet
HNET_BIN=$HNET/bin
HNET_LIB=$HNET/lib
HNET_BCK=$HNET/lib/backup
HNET_LDR=$HNET/lib/loader

ID=$(date +"%Y%m%d-%H%M%S")

cd $HNET_LIB

#
# save all 4 tables with unique name
#
mysqldump -u postfixadmin -ppassword -c postfixadmin mailbox >$HNET_BCK/mailbox_$ID.sql
mysqldump -u postfixadmin -ppassword -c postfixadmin alias >$HNET_BCK/alias_$ID.sql
mysqldump -u postfixadmin -ppassword -c postfixadmin domain >$HNET_BCK/domain_$ID.sql
mysqldump -u postfixadmin -ppassword -c postfixadmin alias_domain >$HNET_BCK/alias_domain_$ID.sql
#
# save extra mailboxes
#
echo "Saving extra mailboxess..."
cp $HNET_LIB/extra_mailboxes.txt $HNET_BCK/extra_mailboxes_$ID.txt
$HNET_BIN/dump_extra_mailboxes | sort >$HNET_LIB/extra_mailboxes.txt
#
# save scouthout aliases
#
echo "Saving scouthout aliases..."
cp $HNET_LIB/scouthout_aliases.txt $HNET_BCK/scouthout_aliases_$ID.txt
$HNET_BIN/dump_scouthout_aliases | sort >$HNET_LIB/scouthout_aliases.txt
#
# save new and extra aliases
#
echo "Saving new and extra aliases..."
cp $HNET_LIB/extra_aliases.txt $HNET_BCK/extra_aliases_$ID.txt
$HNET_BIN/dump_extra_aliases | sort >$HNET_LIB/extra_aliases.txt
#
# save hcc and other domains
#
echo "Saving hcc and other domains..."
cp $HNET_LIB/all_domains.txt $HNET_BCK/all_domains_$ID.txt
$HNET_BIN/dump_all_domains | sort >$HNET_LIB/all_domains.txt
#
# save new and extra domain_aliases
#
echo "Saving new and extra domain_aliases..."
cp $HNET_LIB/extra_alias_domains.txt $HNET_BCK/extra_alias_domains_$ID.txt
$HNET_BIN/dump_extra_alias_domains | sort >$HNET_LIB/extra_alias_domains.txt
#
# prepare emergency backup procedure (here-doecument)
#
cat > $HNET_BCK/restore_$ID <<END
#!/bin/bash
mysql -u postfixadmin -ppassword -c postfixadmin <$HNET_BCK/mailbox_$ID.sql
mysql -u postfixadmin -ppassword -c postfixadmin <$HNET_BCK/alias_$ID.sql
mysql -u postfixadmin -ppassword -c postfixadmin <$HNET_BCK/domain_$ID.sql
mysql -u postfixadmin -ppassword -c postfixadmin <$HNET_BCK/alias_domain_$ID.sql
cp $HNET_BCK/extra_mailboxes_$ID.txt $HNET_LIB/extra_mailboxes.txt
cp $HNET_BCK/scouthout_aliases_$ID.txt $HNET_LIB/scouthout_aliases.txt
cp $HNET_BCK/extra_aliases_$ID.txt $HNET_LIB/extra_aliases.txt
cp $HNET_BCK/all_domains_$ID.txt $HNET_LIB/all_domains.txt
cp $HNET_BCK/extra_alias_domains_$ID.txt $HNET_LIB/extra_alias_domains.txt
END
chmod 755 $HNET_BCK/restore_$ID
#
# build all 4 tables from input files
#
echo "Building mailbox table for Hobbynet/Kadernet..."
cp $HNET_LIB/mailbox_header.tmpl $HNET_LDR/mailbox.sql
$HNET_BIN/gen_mailbox >> $HNET_LDR/mailbox.sql
$HNET_BIN/gen_mailbox2 | sort | uniq >> $HNET_LDR/mailbox.sql
$HNET_BIN/gen_extra_mailbox >> $HNET_LDR/mailbox.sql
cat $HNET_LIB/mailbox_footer.tmpl >> $HNET_LDR/mailbox.sql
$CHMOD 644 $HNET_LDR/mailbox.sql
$CHOWN root:root $HNET_LDR/mailbox.sql
mysql -u postfixadmin -ppassword postfixadmin <$HNET_LDR/mailbox.sql
#
echo "Building alias table for Hobbynet/Kadernet..."
cp $HNET_LIB/alias_header.tmpl $HNET_LDR/alias.sql
$HNET_BIN/gen_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_fff_hobbynet_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_fff_www_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_extra_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_scouthout_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_alias2 | sort | uniq >> $HNET_LDR/alias.sql
$HNET_BIN/gen_func_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_best_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_webm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_kernl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_group_alias | sort | uniq >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_voorz_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_kernl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_secr_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_penm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_webm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ig_bestl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_voorz_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_kernl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_secr_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_penm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_webm_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_regio_bestl_alias >> $HNET_LDR/alias.sql
$HNET_BIN/gen_ledenraad_alias >> $HNET_LDR/alias.sql
# use temporary file with unique mail addresses
cut --delimiter="," --field=4 $HNET_LIB/kaderfunc.txt | sort | uniq > $HNET_LIB/kaderfunc-sorted.txt
$HNET_BIN/gen_fff_kadernet_alias >> $HNET_LDR/alias.sql
rm $HNET_LIB/kaderfunc-sorted.txt
#
cat $HNET_LIB/alias_footer.tmpl >> $HNET_LDR/alias.sql
$CHMOD 644 $HNET_LDR/alias.sql
$CHOWN root:root $HNET_LDR/alias.sql
mysql -u postfixadmin -ppassword -c postfixadmin <$HNET_LDR/alias.sql
#
echo "Building domain table for Hobbynet/Kadernet..."
cp $HNET_LIB/domain_header.tmpl $HNET_LDR/domain.sql
$HNET_BIN/gen_domain >> $HNET_LDR/domain.sql
$HNET_BIN/gen_all_domain >> $HNET_LDR/domain.sql
$HNET_BIN/gen_domain2 >> $HNET_LDR/domain.sql
cat $HNET_LIB/domain_footer.tmpl >> $HNET_LDR/domain.sql
$CHMOD 644 $HNET_LDR/domain.sql
$CHOWN root:root $HNET_LDR/domain.sql
mysql -u postfixadmin -ppassword postfixadmin <$HNET_LDR/domain.sql
#
echo "Building alias_domain table for Hobbynet/Kadernet..."
cp $HNET_LIB/alias_domain_header.tmpl $HNET_LDR/alias_domain.sql
$HNET_BIN/gen_extra_alias_domain >> $HNET_LDR/alias_domain.sql
$HNET_BIN/gen_alias_domain2 >> $HNET_LDR/alias_domain.sql
cat $HNET_LIB/alias_domain_footer.tmpl >> $HNET_LDR/alias_domain.sql
$CHMOD 644 $HNET_LDR/alias_domain.sql
$CHOWN root:root $HNET_LDR/alias_domain.sql
mysql -u postfixadmin -ppassword postfixadmin <$HNET_LDR/alias_domain.sql
#
echo ""
echo "Building systemusers for Roundcube..."
cp $HNET_LIB/systemusers.tmpl $HNET_LIB/systemusers
$HNET_BIN/gen_systemusers >> $HNET_LIB/systemusers
$CHMOD 644 $HNET_LIB/systemusers
$CHOWN root:root $HNET_LIB/systemusers
#
echo ""
echo "Dumping transport for mail-dev..."
$HNET_BIN/dump_transport >$HNET_LIB/transport
cp /etc/postfix/transport /etc/postfix/transport.old
cp $HNET_LIB/transport /etc/postfix/transport
postmap /etc/postfix/transport
#
echo "Dumping relay_recipients for mail-dev..."
$HNET_BIN/dump_relay_recipients >$HNET_LIB/relay_recipients
cp /etc/postfix/relay_recipients /etc/postfix/relay_recipients.old
cp $HNET_LIB/relay_recipients /etc/postfix/relay_recipients
postmap /etc/postfix/relay_recipients
#
echo "Dumping relay_domains for mail2..."
$HNET_BIN/dump_mail2_domains >$HNET_LIB/relay_domains
#
# EOF
#

Conversie van data naar tekst bestanden

Wat ooit gestart is al met de hand beheerde tekst bestanden, is vervangen door bestanden gemaakt uit de PFA database. Omdat alle updates m.b.v. PFA gemaakt worden, zijn die gegevens nieuwer. Door die eerst te dumpen en daarna weer te gebruiken als bron bestand blijven wijzigingen bewaard.

dump_all_domains

Maakt een tekst bestand in all_domains.txt van de alle domeinen in de domain tabel.

dump_extra_alias_domains

Maakt een tekst bestand extra_alias_domains.txt uit de alias_domain tabel.

dump_extra_aliases

Maakt een tekst bestand extra_aliases.txt uit de alias tabel.

dump_extra_mailboxes

Maakt een tekst bestand extra_mailboxes.txt uit de mailbox tabel.

dump_mail2_domains

Maakt een tekst bestand relay_domains uit de domain tabel voor gebruik op mail2.

dump_relay_recipients

Maakt een tekst bestand relay_recipients aan voor Postfix. Dit bestand moet naar /etc/postfix op mail-dev gekopieerd worden en er moet een postmap op uitgevoerd worden.

dump_scouthout_aliases

Maakt een tekst bestand scouthout_aliases.txt uit de alias tabel.

dump_transport

Maakt een tekst bestand transport aan voor Postfix. Dit bestand moet naar /etc/postfix gekopieerd worden en er moet een postmap op uitgevoerd worden.

Genereren van de mailboxen

Alle (ook virtuele) gebruikers waarvoor mail-dev eindstation is voor email, hebben een home directory en een mailbox in een mail directory op dit systeem. Zowel HCC!Hobbynet als de HCC!Kadernet leden hebben allemaal een mailbox met Maildir structuur in /disk/mail/vmail/<domain>/<user>/Maildir/.

gen_mailbox

Dit script maakt de hobbynet mailbox informatie aan. De passwords zijn afkomstig uit ldap op hcc-ldap-lb1. De mailbox naam was altijd <contact>@<systeem>.hobby.nl voor hobbynetleden. Het domein is altijd <systeem>.hobby.nl. Het type attribute in ldap wordt ook bewaard in de mailbox db tabel.

gen_mailbox2

Dit script maakt de kadernet mailbox informatie aan. De mailbox naam is altijd <lidnummer>@kader.hcc.nl voor kaderleden. Het domein voor kaderleden is dus altijd kader.hcc.nl.

gen_extra_mailbox

Dit script maakt mailboxen aan die niet uit de andere bronnen te herleiden zijn. De mailboxen krijgen type 9.

Genereren van de aliases

Email die op een domein op mail-dev wordt afgeleverd om direct weer verder gestuurd te worden heeft geen mailbox nodig. Voorbeeld hiervan is scouthout.nl. Alle email adressen expanderen via aliases naar een of meer externe adressen. Mail-dev fungeert hiervoor dus als mailrelay. Aliases zijn ook nodig voor functionele email adressen van kadernet functies zoals voorzitter, secretaris, enz. Ook zijn er adressen nodig voor grotere groepen ten bate van het kantoor zodat ze alle penningmeesters tegelijk kunnen mailen. De alias tabel wordt dus vrij groot. Er zijn weer meerdere kleine scripts die de tabellen vullen.

gen_alias

Dit script genereert alle hobbynet aliases die uit hobbyabon.txt gemaakt kunnen worden. Voor de hobbynetleden wordt een alias gemaakt met de naam van de gebruiker in de alias tabel. Er komt dus een <contact>@<systeem>.hobby.nl die naar de mailbox <contact>@<systeem>.hobby.nl wijst. De alias tabel is zichtbaar in PostfixAdmin. De alias tabel kan beheerd worden met PostfixAdmin. Via phpmyadmin op dbadmin.hobby.nl kunnen natuurlijk alle tabellen in de database postfixadmin benaderd worden, mocht dit nodig zijn.

Om het mogelijk te maken voor een hobbynet lid de Hobbynet mail ergens anders af te leveren, is de scripting aangepast (vbs20200416). Het mail veld in ou=users bepaald of er een mailbox wordt gemaakt os dat er forwarding wordt gedaan. Zie Hobbynet mail forwarding voor meer uitleg.

gen_fff_hobbynet_alias

Dit script genereert de fff_hnet@hobby.nl alias door uit hobbyabon.txt het emailadres van leden met code 0,1,2,3 te halen.

gen_fff_www_alias

Dit script genereert de fff_www@hobby.nl alias door uit hobbyabon.txt het emailadres te halen van dié leden die een website op een van de Hobbynet webservers hebben. Het is dus een subset van fff_hnet.

gen_extra_alias

Dit script leest extra_aliases.txt en genereert regels in de sql-loaderfile. Het betreft aliases die niet eenvoudig af te leiden zijn uit hobbyabon.txt en kaderfunc.txt.

gen_scouthout_alias

Dit script leest scouthout_aliases.txt en genereert regels in de sql-loaderfile. Het betreft aliases die te maken hebben met scouthout.nl. Er is tevens een scriptje dump_scouthout_aliases dat scouthout_aliases.txt kan genereren uit de alias tabel. Dit kan nuttig zijn als er updates via PostfixAdmin zijn gedaan door de scouthout admin.

gen_alias2

Dit script genereert alle kadernet aliases die uit kaderfunc.txt gemaakt kunnen worden. Voor de kaderleden waar het domain nog kader.hobby.nl is, wordt dat vervangen door kader.hcc.nl. Er wordt een alias gemaakt die naar de mailbox wijst (met het lidnummer uit kaderfunc.txt) en één met de HCC naam uit het in kaderfunc.txt opgenomen email adres. Er komt dus een 1234567@kader.hcc.nl en een a.b.c.janssen@kader.hcc.nl die weer beide naar de mailbox 1234567@kader.hcc.nl verwijzen. De alias tabel kan beheerd worden met PostfixAdmin. Via Phpmyadmin op dbadmin.hobby.nl kunnen natuurlijk ook alle tabellen in de database postfixadmin benaderd worden.

gen_func_alias

Dit script genereert alle functionele aliases voor elke groepering. Het maakt aliases aan voor voorzitter@<groepering>.hcc.nl, secretaris@<groepering>.hcc.nl en penningmeester@<groepering>.hcc.nl. Tevens wordt info@<groepering>.hcc.nl gemaakt die ook naar secretaris@<groepering>.hcc.nl verwijst. De informatie wordt gehaald uit de kaderfunc.txt file.

Om backwards compatible te zijn is ook voorzien in aliases voor 'voorz', 'secr' en 'penm' die verwijzen naar de lange naam. Uit praktische overweging worden hier ook de rfc mailboxen gemaakt. abuse@.. verwijst naar abuse@hobby.nl.

gen_best_alias

Dit script genereert de bestuur alias voor elke groepering. Dus per groepering de voorzitter, secretaris, penningmeester en bestuursleden met als alias bestuur@<groepering>.hcc.nl. De informatie wordt weer gehaald uit de kaderfunc.txt file. Sommige groeperingen zoals hobby-computer-club wordt overgeslagen. Er is geen bestuur@hobby-computer-club.hcc.nl...

gen_webm_alias

Voor de webmasters is een apart script gemaakt omdat er een variabel aantal webmasters per groepering kan zijn. Bron bestand is weer kaderfunc.txt. Dit script genereert de webmaster@<groepering>.hcc.nl alias die een variabel aantal target mailboxen kent. Ook wordt altijd de secretaris toegevoegd. In het geval dat er helemaal géén webmaster is aangemeld komt de mail dus tenminste in de mailbox van de secretaris (is dit nog zo?). Bron bestand is natuurlijk weer kaderfunc.txt.

gen_kernl_alias

Voor de kernleden is een apart script gemaakt omdat er een variabel aantal kernleden per groepering kan zijn. Bron bestand is weer kaderfunc.txt. Dit script genereert de kernleden@<groepering>.hcc.nl alias die een variabel aantal target mailboxen kent.

gen_kadernet_alias

Dit script leest kadernet_aliases.txt en genereert de SQL regels voor speciale kadernet aliases die niet uit kaderfunc.txt gemaakt kunnen worden.

gen_ig_<func>_alias

Deze scripts genereren een alias die alle voorzitters, secretarissen, penningmeesters, webmasters, gewone bestuursleden en kernleden van interessegroepen (vroeger gebruikersgroep) als target hebben. Deze aliasen worden zelden gebruikt, maar voorzien erin om alle penningmeesters uit te nodigen voor een penm. overleg. De script zijn nagenoeg identiek. Zoals altijd zijn de target adressen mailboxen (herkenbaar aan het lidnummer). Bron bestand is kaderfunc.txt.
Op verzoek van het Kantoor worden enkele key-personen in de alias gezet. Deze personen dienen in de alias kantoor@kader.hcc.nl (in extra_aliases.txt) gezet te worden om in de ig_ alias te komen.

gen_regio_<func>_alias

Deze scripts genereren een alias die alle voorzitters, secretarissen, penningmeesters, webmasters, gewone bestuursleden en kernleden van regio's (vroeger afdeling) als target hebben. Deze aliasen worden zelden gebruikt, maar voorzien erin om alle penningmeesters uit te nodigen voor een penm. overleg. De script zijn nagenoeg identiek. Zoals altijd zijn de target adressen mailboxen (herkenbaar aan het lidnummer). Bron bestand is kaderfunc.txt.
Op verzoek van het Kantoor worden enkele key-personen in de alias gezet. Deze personen dienen in de alias kantoor@kader.hcc.nl (in extra_aliases.txt) gezet te worden om in de regio_ alias te komen. Deze aliases zijn weer gecombineerd tot grotere groepen.

Alle voorz, secr, penm, enz van ig's:
ig_voorz@kader.hcc.nl 
ig_secr@kader.hcc.nl
ig_penm@kader.hcc.nl
ig_bestl@kader.hcc.nl
ig_kernl@kader.hcc.nl
ig_webm@kader.hcc.nl

Alle voorz, secr, penm, enz van regio's
regio_voorz@kader.hcc.nl
regio_secr@kader.hcc.nl
regio_penm@kader.hcc.nl
regio_bestl@kader.hcc.nl
regio_kernl@kader.hcc.nl
regio_webm@kader.hcc.nl

Alle voorzitters, secr, enz:
fff_voorz@kader.hcc.nl (ig_voorz@kader.hcc.nl en regio_voorz@kader.hcc.nl samen)
fff_secr@kader.hcc.nl (alle secretarissen)
fff_penm@kader.hcc.nl
fff_bestl@kader.hcc.nl
fff_kernl@kader.hcc.nl
fff_webm@kader.hcc.nl

Alle bestuursleden van resp. ig's en regio's: 
fff_ig_bestuur@kader.hcc.nl (ig_voorz, ig_secr, ig_penm en ig_bestl@kader.hcc.nl samen)
fff_regio_bestuur@kader.hcc.nl (regio_voorz, regio_secr, regio_penm en regio_bestl@kader.hcc.nl samen)

Alle bestuursleden:
fff_bestuur@kader.hcc.nl (de 4 ig_<func> en de 4 regio_<func> samen)
 
Alle kaderleden:
fff_kader@kader.hcc.nl (ALLE kaderleden samen, dus besturen maar nu ook met de kernleden en webmasters)

gen_sr_presentatoren en gen_sr_regio_coordinatoren_alias

Deze twee scripts genereren de aliases voor de regio_coordinatoren en presentatoren van de SeniorenAcademie (SR). Voor deze functionarissen is een virtuele IG gemaakt (SR-Ambassadeurs) omdat niet alle functionarissen lid zijn van SR. Indelen bij de regio was een optie maar dan liggen er problemen op de loer met verhuizingen.
PAS OP: deze scripts bevatten hard gecodeerde waarden!

gen_fff_kadernet_alias

Dit script genereert de fff_kader@kader.hcc.nl. Hiervoor wordt kaderfunc.txt gebruikt (code 5).
Op verzoek van het Kantoor worden enkele kantoor functies in de alias gezet. Deze personen dienen in de alias kantoor@kader.hcc.nl (in extra_aliases.txt) gezet te worden om in de fff_ aliases te komen.

Genereren van de domains

Postfix kan de email voor vele domeinen afhandelen. Om ongewenst relayeren (spam!) te voorkomen moeten de domeinen van de geadresseerden gecheckt kunnen worden.

gen_domain

Dit script genereert de hobbynet domeinen voor de domeinen in hobbyabon.txt voor de tabel domain. Ook hier geldt weer dat de domain tabel beheerbaar is in PostfixAdmin.

gen_all_domain

Het bronbestand voor gen_all_domain is all_domains.txt. Het script gen_all_domain voegt records toe aan de domain tabel die betrekking hebben op alle beheerde domeinen. Dit zijn b.v. hccm.nl en hcc-watersport.nl maar weer NIET modelbaan-gg.hcc.nl. Die laatste wordt door gen_domain2 aangemaakt.

gen_domain2

Dit script genereert de kadernet domeinen. Voor kadernet wordt kader.hobby.nl vervangen door kader.hcc.nl. Ook hier geldt weer dat de domain tabel beheerbaar is in PostfixAdmin. Er worden domeinen gemaakt zonder de afd- of -gg en met regio- i.p.v. afd- en -ig i.p.v. -gg.

Genereren van de alias-domains

Postfix kent een z.g. alias_domain. Dit is een domeinnaam die een alias is voor een andere domeinnaam. Alle email adressen in het originele domein komen 1 op 1 voor in het alias domein.

gen_extra_alias_domain

Dit script leest extra_alias_domains.txt en genereert SQL regels voor de tabel alias_domain

De layout van de tekst file is simpel: alias_domain, target_domain. Voorbeeld:

# list of alias_domains
# mirror.tld,target.tld
#
hccm.nl:modelbaan-gg.hcc.nl
hcc-modelbaan.nl:modelbaan-gg.hcc.nl
hcc-games.nl:games-gg.hcc.nl
hcc-clan.nl:games-gg.hcc.nl

Opm: De automatisch gegenereerde HCC domeinnamen (ontstaan door -gg/afd-/cg- weg te laten) mogen dus NIET in de platte tekst file staan.

gen_alias_domain2

Dit script genereert alle HCC afdeling en ig domeinen maar dan zonder de afd- prefix en -gg suffix. Input is kaderfunc.txt.

Systemusers

Het upd_smail script genereert tevens een soor virtualusers bestand voor Roundcube. Om de kaderleden in staat te stellen met slechts hun lidnummer in te loggen op webmail is er een default domein kader.hcc.nl gedefinieerd. Als iemand zonder domein inlogt, wordt @kader.hcc.nl toegevoegd. Door fake entries op te nemen met <systeemuser>@kader.hcc.nl en een alias zonder domein kunnen die toch inloggen op het webinterface. De laatste groep zijn de hobbynet users die vanouds met S<systeem> konden inloggen. Voor hen wordt ook een fake entry gemaakt met S<systeem>@kader.hcc.nl met als alias het opgegeven email adres. Voor dit email adres is eerder een mailbox aangemaakt.

De beschreven faciliteit bestaat alleen voor het Roundcube web email interface. Pop3 en imap clients moeten, behalve voor systeemusers, altijd een domein meegeven!

Extra scripts

L8er...

Terug naar EMAIL