<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://mediawiki.a-eskwadraat.nl/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://mediawiki.a-eskwadraat.nl/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Arnold</id>
		<title>A-Eskwiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://mediawiki.a-eskwadraat.nl/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Arnold"/>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Special:Contributions/Arnold"/>
		<updated>2026-08-10T11:20:15Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.2</generator>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Mail</id>
		<title>Mail</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Mail"/>
				<updated>2021-02-22T21:25:19Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bij A–Eskwadraat gebruiken we '''Maildir''' voor de opslag van e-mail van gebruikers. We raden gebruikers aan om niet direct de Maildirmappen te benaderen, maar om dit via [http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol IMAP] of [http://www.washington.edu/alpine/ Alpine] te doen. De standaardconfiguratie van de meeste mailclients staat hier ook voor ingesteld.&lt;br /&gt;
Je kunt je mail bekijken op mail.a-eskwadraat.nl.&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
Op [[Haskell|haskell]] draait de virtuele machine vm-mailpp (spreek uit: mail plus plus) om het mailverkeer van en naar A-Eskwadraat te regelen:&lt;br /&gt;
&lt;br /&gt;
*[http://www.postfix.org/ postfix] (''/etc/postfix/'') verwerkt in principe alle binnenkomende mails, en wat er waarheen doorgestuurd moet worden;&lt;br /&gt;
*[http://www.dovecot.org/ dovecot] (''/etc/dovecot/'') neemt de POP- en IMAP-servers voor zijn rekening en verzorgt authenticatie voor het versturen van mails;&lt;br /&gt;
*[https://www.amavis.org/ amavis] (''/etc/amavisd/'') geeft alle binnenkomende mails door aan SpamAssassin en ClamAV om gefilterd te worden;&lt;br /&gt;
*[http://spamassassin.apache.org/ SpamAssassin] (''/etc/mail/spamassassin/'') [[Mailfiltering|filtert]] de spam uit het binnenkomende mailverkeer;&lt;br /&gt;
*[http://http://www.clamav.net/lang/en/ ClamAV] (''/etc/clamd.d/'') scant het mailverkeer voor virussen en dergelijke;&lt;br /&gt;
*[https://roundcube.net/ RoundCube] (''/etc/roundcubemail/'', ''/usr/share/roundcubemail'') is een webmailclient die in een [https://www.apache.org/ apache] webserver op vm-mailpp draait;&lt;br /&gt;
*[http://www.list.org/ Mailman] (''/etc/mailman/'') Mailman is verantwoordelijk voor de mailing lists, zoals de BBCie-announce.&lt;br /&gt;
&lt;br /&gt;
== Naamgeving Maildirmappen ==&lt;br /&gt;
&lt;br /&gt;
Let op dat om voor dovecot begrijpbare namen te hebben, de mappen op in ''~/Maildir'' altijd met een punt moeten beginnen. Submappen werken ook op deze manier. Een paar voorbeelden:&lt;br /&gt;
&lt;br /&gt;
*''~/Maildir/.Intro/'' voor de IMAP-map ''Intro'';&lt;br /&gt;
*''~/Maildir/.Sysop.postmaster/'' voor de map ''postmaster'' als submap van ''Sysop''.&lt;br /&gt;
&lt;br /&gt;
Als de mappen via IMAP worden aangemaakt gebeurt dit automatisch.&lt;br /&gt;
&lt;br /&gt;
== Postfix ==&lt;br /&gt;
&lt;br /&gt;
Postfix is de SMTP server voor de vm-mailpp.&lt;br /&gt;
&lt;br /&gt;
Postfix gebruikt meerdere ports om mail te ontvangen en te verwerken. Mail die wordt gestuurd door leden moet naar de SMTP daemon op port 587 (''submission'' poort) worden gestuurd. Authenticatie en TLS encryptie zijn een vereiste op deze verbinding. In de toekomst zal de [[Router|Router]] de encryptie tussen client en mail-server regelen. Alle andere mail komt binnen op port 25. Spam- en virus-filtering gebeurd via de SMTP daemons op ports 10025 en 10027 voor onbekende en bekende mail, respectievelijk.&lt;br /&gt;
&lt;br /&gt;
In ''/etc/postfix/master.cf'' staat de configuratie van deze daemons. De configuratie in ''/etc/postfix/main.cf'' wordt gebruikt voor zaken die niet in ''master.cf'' zijn opgegeven; in principe staat hier de configuratie voor poort 25 en worden de opties specifiek voor de andere poorten opgegeven in ''master.cf''.&lt;br /&gt;
&lt;br /&gt;
Een bug/feature van postfix die slecht gedocumenteerd is, is als volgt: wanneer postfix langer dan 10 seconden duurt over het authentiseren van een email, wordt deze geweigerd met een verkeerde foutmelding: &amp;quot;535 5.7.8 Error: authentication failed: Connection lost to authentication server (SMTP AUTH failed with the remote server)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Transport ===&lt;br /&gt;
&lt;br /&gt;
Eerst checkt Postfix of de inkomende mail aan een lokaal mailadres is gestuurd. Welke domeinen als 'lokaal' worden bestempeld staat in ''/etc/postfix/domains/local''. Voor lokale mailadressen geldt, dat het domein in de verdere configuratie kan worden weggelaten.&amp;lt;br/&amp;gt;Daarna checkt Postfix of de inkomende mail naar een virtueel domein is gestuurd. Mailadressen van domeinen zoals turingslegacy.nl worden herschreven naar lokale mailadressen (zonder domeinnaam). De virtuele domeinen staan in ''/etc/postfix/domains/virtual''.&lt;br /&gt;
&lt;br /&gt;
De overblijvende adressen, worden opgezocht in de bestanden met aliases in /etc/postfix/aliases, om te zien of de mail toevallig naar een ander lokaal mailadres doorgestuurd moet worden. Postfix gebruikt hiervoor de bestanden in .db formaat, de tekstbestanden zonder extensie zijn voor ons als sysop leesbaar en te bewerken maar moeten wel met ''postalias'' in een .db bestand omgezet worden naar iedere wijziging.&amp;lt;br/&amp;gt;Als iemand dit vergeet na het aanpassen van een bestand met aliases, plaatst postfix een melding in ''/var/log/maillog'': &amp;quot;database file ''bestandsnaam''.db is older than source file ''bestandsnaam''&amp;quot;.&amp;lt;br/&amp;gt;Nu blijven er als het goed is, alleen gebruikersnamen over die op het systeem bestaan. Voor deze gebruikers wordt het bestand ''.forward'' in de homedirectory van de gebruiker opgezocht.&lt;br /&gt;
&lt;br /&gt;
Als in een ''.forward'' bestand de gebruikersnaam voorafgegaan door een backslash (\) wordt aangetroffen, wordt de mail in de Maildir map van die gebruiker geplaatst. Als een regel met een pipe (|) wordt aangetroffen, wordt het mailbericht doorgegeven als standard input aan het commando dat achter het |-teken staat. Andere regels met tekst worden geïnterpreteerd als mailadressen (lokaal zonder domeinnaam of willekeurig mailadres met domeinnaam) waarnaar de mail moet worden doorgestuurd.&amp;lt;br/&amp;gt;''Let op bij het gebruiken van de pipe (|): het kan zijn dat SELinux niet toestaat dat postfix een ander programma direct aanroept.''&lt;br /&gt;
&lt;br /&gt;
Als de mail niet bij een lokaal of virtueel adres hoort, checkt postfix of de inkomende mail is gestuurd naar een domein waarvoor A-Eskwadraat mail relayet. Deze mail word onveranderd naar de mailserver van dat domein verstuurd (relaying). Dit voorkomt verlies van mail voor het externe domein wanneer hun mailserver uitvalt, aangezien A-Eskwadraat de secondary mailserver is voor dat domein. Een uitzondering op de regel is mail bedoeld voor de webserver. Mail aan de webcie komt binnen op de mail server, maar moet worden doorgestuurd naar de webserver. De verwijzingen zijn te vinden in ''/etc/postfix/transport_www'' en ''/etc/postfix/transport_regex''.&lt;br /&gt;
&lt;br /&gt;
Let op dat deze uitleg heel erg bot is. Lees de relevante ''man'' pages van Postfix om te leren hoe mail word verwerkt. Let op dat veranderingen in een alias/transport/domain map niet worden opgemerkt tot het ''postmap'' of ''postalias'' op het bestand is aangeroepen!&lt;br /&gt;
&lt;br /&gt;
=== Mail Authorisatie ===&lt;br /&gt;
&lt;br /&gt;
Om te controleren of een gebruiker wel als een adres mag mailen wordt gebruik gemaakt van de smtpd_sender_login_maps optie voor postfix, die in een database de users opzoekt die als gegeven adres mogen versturen.&amp;amp;nbsp;Als er via SMTP een request gedaan wordt om van buitenaf een mail te versturen doet postfix een query en kijkt welke users als die alias mail mogen versturen. Deze config is op de vm-mailpp te vinden in `/etc/postfix/alias_auth.cf`.&lt;br /&gt;
&lt;br /&gt;
De database wordt gegenereerd door een python script die op de vm-sysop staat bij de sysop api, aangezien daar de mail aliases al staan voor de alias_check. Het python script, te vinden in `/var/www/html/api/python/mail-authorization.py`, loopt recursief langs alle users die in cies, bestuur, extern of iba zitten en kijkt daarnaast ook naar mail aliassen. Aan de hand hiervan wordt met een sql query alle transitieve relaties expliciet gemaakt, zodat dit niet runtime gedaan moet worden. Als een alias naar een cie wordt doorgestuurd, en een user weer in die cie zit, wil je dat die user ook als die alias mag mailen. Als database wordt PostgreSQL gebruikt op de vm-database. De database die gebruikt wordt heet &amp;quot;mail&amp;quot;. In de python code staan nog wat comments. Er draait op de vm-sysop een cron die af en toe de database refreshed. Daarnaast is het python script ook intern bereikbaar [http://vm-sysop.a-eskwadraat.nl/api/python/mail-authorization.py hier]. Bij het laden van deze pagina wordt de database gerefreshed. Op deze manier kan de database meteen gerefreshed worden zodra iemand toegevoegd is aan een cie. Als er in een alias een wildcard staat (*@bapc.eu: bapc), wat betekend dat alles van het domein bapc.eu naar de bapc commissie wordt gestuurd, wordt dit omgezet naar een SQL wildcard, wat uiteindelijk dus netjes werkt.&lt;br /&gt;
&lt;br /&gt;
Er is reeds voorgekomen dat de cache van mailpp niet verversd werd waardoor er geen permissions kwamen voor gebruikers.&lt;br /&gt;
&lt;br /&gt;
Als gebruiker x mag mailen als y@a-eskwadraat.nl, dan komen in de database de entries (x, y@a-eskwadraat.nl), (x@a-eskwadraat.nl, y) en (x@a-eskwadraat.nl, y@a-eskwadraat.nl) te staan. Dit omdat dingen soms worden opgevraagd met domain en soms zonder.&lt;br /&gt;
&lt;br /&gt;
=== Mailfiltering ===&lt;br /&gt;
&lt;br /&gt;
Postfix maakt gebruik van amavisd voor het filteren van de inkomende mail. Amavis is een interface voor SpamAssassin welke spam filtert en ClamAV welke mails op virussen scant. Check de configuratie op [[Vm-saltmaster|vm-saltmaster]] voor details.&lt;br /&gt;
&lt;br /&gt;
Om de virus database up te daten:&lt;br /&gt;
&amp;lt;pre&amp;gt;freshclam&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mailman ==&lt;br /&gt;
&lt;br /&gt;
Mailman is verantwoordelijk voor de infrastructuur van de mailing lists. De mailing lists zijn te vinden op [lists.a-eskwadraat.nl/mailman lists.a-eskwadraat.nl/mailman]. Er zijn twee belangrijke services om mailman te draaien: mailman en httpd. De configuratie van mailman bevind zich in ''/etc/mailman/'', de data bevind zich in ''/var/lib/mailman'', en de binaries bevinden zich in ''/usr/lib/mailman''.&lt;br /&gt;
&lt;br /&gt;
Gebruik de scripts in /usr/lib/mailman/bin om de mailing lists vanaf de command-line te wijzigen. De volgende commando's zijn belangrijk bij het debuggen / migreren van mailman:&lt;br /&gt;
&lt;br /&gt;
*check_perms: repareert de bestandsrechten van mailman-specifieke bestanden.&lt;br /&gt;
*with_list &amp;amp; fix_url: repareert de links van de mailman archieven indien deze zijn veranderd.&lt;br /&gt;
&lt;br /&gt;
Lees de [http://wiki.list.org/DOC/4.09%20Summary%20of%20the%20mailman%20bin%20commands MailmanWiki] voor een samenvatting van alle commands.&lt;br /&gt;
&lt;br /&gt;
Mailman werkt samen met de Postfix mailserver via de alias map ''/etc/mailman/aliases''. Voer het volgende commando uit na het toevoegen/verwijderen van een lijst zodat Postfix zijn alias database update:&lt;br /&gt;
&amp;lt;pre&amp;gt;postalias /etc/mailman/aliases&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na een migratie van de mailman lijsten is het belangrijk om ''restorecon'' uit te voeren op ''/var/lib/mailman''. Mailman en SELinux werken prima samen zolang de rechten maar goed staan.&lt;br /&gt;
&amp;lt;pre&amp;gt;# Samenvatting van een Mailman migratie.&lt;br /&gt;
# Op de nieuwe mailserver.&lt;br /&gt;
rsync -azv -e &amp;quot;ssh -i &amp;lt;sshkey&amp;gt;&amp;quot; &amp;lt;OUDEHOST&amp;gt;:/var/lib/mailman/ /var/lib/mailman/&lt;br /&gt;
restorecon -r /var/lib/mailman/&lt;br /&gt;
cd /usr/lib/mailman/&lt;br /&gt;
bin/check_perms -f&lt;br /&gt;
bin/withlist -l -a -r fix_url&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dovecot ==&lt;br /&gt;
&lt;br /&gt;
Dovecot is de IMAP server verantwoordelijk voor het ophalen en beheren van de mail opgeslagen in de homedirs. Mail wordt opgeslagen in de .Maildir van een gebruik zijn home directory. De server luistert op poort 143 (standaard IMAP poort) en vereist een TLS-encrypted verbinding van de gebruiker. Het certificaat voor de verbinding is anders dan het certificaat van de webserver.&amp;amp;nbsp; Dovecot authenticeert gebruikers door middel van LDAP. Dovecot werkt ook als authenticatie-server voor postfix door middel van een open socket. Een SELinux module is vereist om Postfix toegang te geven tot de socket.&lt;br /&gt;
&lt;br /&gt;
Voor meer configuratie details, zie de configuratie op de salt-master. (CentOS 6: /srv/salt/centos/vm-mail/dovecot, CentOS 7: /srv/salt/centos7/dovecot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AL DE CONFIGURATIE HIERONDER IS GIGANTISCH OUT OF DATE''' \/\/\/&lt;br /&gt;
&lt;br /&gt;
== Configuratie mailfilters ==&lt;br /&gt;
&lt;br /&gt;
Gebruik je een ''.forward'' of ''.procmailrc'' om e-mail direct in mappen te stoppen, let dan op de naamgeving (zie hierboven) en zorg ervoor dat de mappen altijd op een ''/'' eindigen. Begin je ''.procmailrc'' ook altijd met de regel&lt;br /&gt;
&lt;br /&gt;
 MAILDIR=$HOME/Maildir/&lt;br /&gt;
&lt;br /&gt;
om te zorgen dat e-mail toch niet in ''/var/mail'' terechtkomt.&lt;br /&gt;
&lt;br /&gt;
== Maak een mailserver met exim, en dovecot ==&lt;br /&gt;
&lt;br /&gt;
Zorg eerst dat sendmail uit staat!&lt;br /&gt;
&amp;lt;pre&amp;gt;service sendmail stop&lt;br /&gt;
chkconfig sendmail off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bij voorkeur verwijder je ook de package voor [[Postfix|postfix]]. Deze is standaard bij CentOS geïnstalleerd.&lt;br /&gt;
&lt;br /&gt;
=== Exim ===&lt;br /&gt;
&lt;br /&gt;
Exim is een MTA (Mail Transfer Agent) en is ervoor om mailtjes te versturen, ontvangen, en doorsturen. Dit gebeurd uiteraard op de mailserver!&lt;br /&gt;
&lt;br /&gt;
Installeer allereerst exim op de host.&lt;br /&gt;
&amp;lt;pre&amp;gt;# yum install exim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verander vervolgens het configuratie bestand /etc/exim/exim.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Het Mail domain - normaal gesproken a-eskwadraat.nl&lt;br /&gt;
primary_hostname = circle.a-eskwadraat.nl&lt;br /&gt;
&lt;br /&gt;
# Weiger met ipv6 te werken.&lt;br /&gt;
local_interfaces = 0.0.0.0&lt;br /&gt;
disable_ipv6 = true&lt;br /&gt;
&lt;br /&gt;
daemon_smtp_ports = smtp&amp;amp;nbsp;: submission&lt;br /&gt;
accept_8bitmime = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Lijsten van geldige mail domainin.&lt;br /&gt;
domainlist mailman_domains = CONFDIR/domains.mailman&lt;br /&gt;
domainlist local_domains = @&amp;amp;nbsp;: CONFDIR/domains.local&amp;amp;nbsp;: +mailman_domains&amp;amp;nbsp;: lsearch;CONFDIR/domains.virtual&lt;br /&gt;
domainlist relay_to_domains = CONFDIR/domains.relay&lt;br /&gt;
&lt;br /&gt;
hostlist relay_from_hosts = 10.14.3.0/22&lt;br /&gt;
&lt;br /&gt;
# Backup mail server in het geval dat onze niet werkt.&lt;br /&gt;
hostlist mx_hosts = mail.wolffelaar.nl&lt;br /&gt;
&lt;br /&gt;
qualify_domain = A-Eskwadraat.nl&lt;br /&gt;
&lt;br /&gt;
queue_run_max = 250&lt;br /&gt;
&lt;br /&gt;
smtp_accept_max = 100&lt;br /&gt;
smtp_accept_max_per_host = ${if match_ip{$sender_host_address}{+mx_hosts}{50}{10}}&lt;br /&gt;
&lt;br /&gt;
received_headers_max = 30&lt;br /&gt;
&lt;br /&gt;
RETRY_SECONDARY=F,90d,15m&lt;br /&gt;
RETRY_REST=F,2h,15m; G,16h,2h,1.5; F,4d,8h&lt;br /&gt;
&lt;br /&gt;
acl_smtp_rcpt = acl_check_rcpt&lt;br /&gt;
acl_not_smtp_start = acl_check_not_smtp&lt;br /&gt;
acl_smtp_data = acl_check_data&lt;br /&gt;
&lt;br /&gt;
host_lookup = *&lt;br /&gt;
helo_try_verify_hosts =&amp;amp;nbsp;!@&amp;amp;nbsp;:&amp;amp;nbsp;!@[]&lt;br /&gt;
helo_allow_chars = _&lt;br /&gt;
&lt;br /&gt;
# ClamAV - The Anti-Virus Scanner&lt;br /&gt;
av_scanner = clamd:/var/run/clamav/clamd.sock&lt;br /&gt;
&lt;br /&gt;
# Custom 5s limiet.&lt;br /&gt;
rfc1413_query_timeout = 5s&lt;br /&gt;
&lt;br /&gt;
# Mailman support, als per /usr/share/doc/mailman/README.EXIM.gz&lt;br /&gt;
MAILMAN_HOME=/var/lib/mailman&lt;br /&gt;
MAILMAN_WRAP=/usr/lib/mailman/mail/mailman&lt;br /&gt;
MAILMAN_USER=mailman&lt;br /&gt;
MAILMAN_GROUP=mailman&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dovecot ===&lt;br /&gt;
&lt;br /&gt;
Dovecot is een IMAP en POP3 server, wat inhoud dat het mailtjes kan ontvangen, iets wat best wel handig is om te hebben. Installeer dovecot op je mailserver als je dat nog niet gedaan hebt. Verander dan nu het volgende:&lt;br /&gt;
&lt;br /&gt;
In /etc/dovecot/dovecot.conf:&lt;br /&gt;
&lt;br /&gt;
*protocols = imap&lt;br /&gt;
*login_trusted_networks = &amp;amp;lt;ip-adressen die je vertrouwd&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In /etc/dovecot/conf.d/10-mail.conf&lt;br /&gt;
&lt;br /&gt;
*mail_location = maildir:~/Maildir&lt;br /&gt;
*lock_method = dotlock&lt;br /&gt;
&lt;br /&gt;
In /etc/dovecot/conf.d/10-auth.conf&lt;br /&gt;
&lt;br /&gt;
*disable_plaintext_auth = no&lt;br /&gt;
*auth_realms = aeskwadraat&lt;br /&gt;
*auth_default_realm = aeskwadraat&lt;br /&gt;
*auth_gssapi_hostname = &amp;amp;lt;ipa-server&amp;amp;gt;&lt;br /&gt;
*auth_krb5_keytab = /etc/dovecot/krb5.keytab&lt;br /&gt;
*auth_mechanisms = plain gssapi&lt;br /&gt;
&lt;br /&gt;
en zet op het einde&lt;br /&gt;
&amp;lt;pre&amp;gt;userdb {&lt;br /&gt;
  driver = static&lt;br /&gt;
  args = uid=dovecot gid=dovecot home=/var/spool/mail/%u&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maak nu op de ipa-server een service imap aan met de mailserver als host. Dit kan je doen via de webinterface. Voer vervolgens het volgende uit op de mailserver:&lt;br /&gt;
&amp;lt;pre&amp;gt;kinit admin&lt;br /&gt;
ipa-getkeytab -s &amp;lt;ipa-server&amp;gt; -p imap/&amp;lt;mailserver&amp;gt; -k /etc/dovecot/krb5.keytab&lt;br /&gt;
chown root:dovecot /etc/dovecot/krb5.keytab&lt;br /&gt;
chmod 640 /etc/dovecot/krb5.keytab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart dovecot en zet hem standaard aan:&lt;br /&gt;
&amp;lt;pre&amp;gt;service dovecot restart&lt;br /&gt;
chkconfig dovecot on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zet tenslotte nog met system-config-firewall-tui 'imap over ssl' en 'mail (smtp)' aan, en voila! Je kan nu met ipa-users gebruik maken van IMAP om mailtjes te ontvangen!&lt;br /&gt;
&lt;br /&gt;
Je kan eventueel in /etc/postfix/main.cf en /etc/dovecot/conf.d/10-mail.conf nog het een ander van waar de mail wordt opgeslagen veranderen.&lt;br /&gt;
&lt;br /&gt;
=== Spamassassin ===&lt;br /&gt;
&lt;br /&gt;
Spamassassin is een mailfilteringprogramma voor spam. Om het te installeren:&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install spamassassin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maak nu de user en group spamd aan:&lt;br /&gt;
&amp;lt;pre&amp;gt;groupadd -g 5001 spamd&lt;br /&gt;
useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd&lt;br /&gt;
mkdir /var/lib/spamassassin&lt;br /&gt;
chown spamd:spamd /var/lib/spamassassin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zet dan het volgende in /etc/mail/spamassassin/local.cf:&lt;br /&gt;
&amp;lt;pre&amp;gt;required_score 5.0&lt;br /&gt;
report_safe 0&lt;br /&gt;
rewrite_header Subject [***SPAM***]&lt;br /&gt;
&lt;br /&gt;
# Enable the Bayes system&lt;br /&gt;
use_bayes 1&lt;br /&gt;
use_bayes_rules 1&lt;br /&gt;
# Enable Bayes auto-learning&lt;br /&gt;
bayes_auto_learn 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verander nu in /etc/postfix/master.cf&lt;br /&gt;
&amp;lt;pre&amp;gt;smtp      inet  n       -       n       -       -       smtpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&amp;lt;pre&amp;gt;smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamassassin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
en stop op het einde van master.cf:&lt;br /&gt;
&amp;lt;pre&amp;gt;spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart nu spamassassin en postfix:&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig spamassassin on&lt;br /&gt;
service spamassassin restart&lt;br /&gt;
service postfix restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
&lt;br /&gt;
In postfix staan de locaties van de aliases in /etc/postfix/main.cf. Deze kan je vinden bij de regel 'alias_maps = ...'. Als je een nieuw aliasbestand wilt toevoegen, voeg dit dan ook toe bij deze regel als hash:&amp;amp;lt;bestandslocatie&amp;amp;gt;. Vergeet ook niet om dit toe te voegen bij alias_database!.&lt;br /&gt;
&lt;br /&gt;
De aliases zelf staan geconfigureerd in de aliasbestanden die te vinden zijn onder /etc/postfix/alias/. Als je een nieuwe alias in een bestand hebt gezet moet je het db-bestand up-to-date make door het commando 'postalias *bestand*' uitvoeren. Let erop dat de bestandsnaam de naam van het bestand is wat je gewijzigd hebt, niet een bestand met extensie '.db'.&lt;br /&gt;
&lt;br /&gt;
Op het moment van schrijven hebben we 4 alias bestanden (bestuur, cies, mensjes en standaard). Als je een alias toevoegt of veranderd doe je dit in het bijbehorende alias bestand (bestuur gerelateerde aliassen in &amp;quot;bestuur&amp;quot;, cies gerelateerde aliassen in &amp;quot;cies&amp;quot;, etc.).&lt;br /&gt;
&lt;br /&gt;
Als voorbeeld gaan we de alias sokken@a-eskwadraat aanmaken voor Michal en Rosanne. Dit is niet bestuur of cies gerelateerd dus zetten we deze alias in het bestand mensjes. Navigeer naar /etc/postfix/alias en open het bestand mensjes. Je begint met de alias gevolgd door een dubbele punt en dan A-eskwadraat gebruikersnaam(en) waarvoor de alias bedoeld is. In het geval van sokken@a-eskwadraat komt dat er dus als volgt uit te zien:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sokken: michalj, rosanne&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vervolgens moet deze wijziging nog in de database gezet worden dit gebeurt met: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;postalias mensjes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nu gaan de mailtjes die binnenkomen op sokken@a-eskwadraat naar Michal en Rosanne!&lt;br /&gt;
&lt;br /&gt;
==== Lijst van alle forwards maken ====&lt;br /&gt;
&lt;br /&gt;
===== Stap 1 =====&lt;br /&gt;
&lt;br /&gt;
Maak een lijst die voor elke alias geeft waar het naar geforward wordt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;postalias -s [naam database bestand (zonder .db)]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Het onderstaande lijstje moeten we handmatig meenemen en is gebaseerd op de aliassen in het standaard.db bestand:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
abuse:  postmaster&lt;br /&gt;
backup: root&lt;br /&gt;
hostmaster:     root&lt;br /&gt;
irc:    root&lt;br /&gt;
list:   root&lt;br /&gt;
listmaster:     root&lt;br /&gt;
logcheck:       root&lt;br /&gt;
postmaster:     sysop-postmaster, sysop&lt;br /&gt;
root:   sysop&lt;br /&gt;
selinux:        root&lt;br /&gt;
webmaster:      webcie&lt;br /&gt;
www-data:       webcie&lt;br /&gt;
mailer-daemon:  postmaster&lt;br /&gt;
mailman-owner:  listmaster&lt;br /&gt;
majordom:       root&lt;br /&gt;
uucp:   root&lt;br /&gt;
www-dmz:        webmaster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let op: Er zijn ook een soort aliassen in de /etc/mailman/ map, waarschijnlijk bedoeld voor mailing lists.&lt;br /&gt;
&lt;br /&gt;
Ook nog even kijken naar de aliasen in /etc/aliases.db&lt;br /&gt;
 &lt;br /&gt;
== Instellingen ==&lt;br /&gt;
&lt;br /&gt;
=== Postfix ===&lt;br /&gt;
&lt;br /&gt;
==== Mail relay ====&lt;br /&gt;
&lt;br /&gt;
Postfix kan mail relayen naar een extern domein. Hiervoor is de volgende regel:&lt;br /&gt;
&amp;lt;pre&amp;gt;relay_domains = $mydestination, hash:/etc/postfix/domains.relay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In het bestand /etc/postfix/domains.relay staat de lijst van alle externe domains waar mail naar toe gerelayed wordt. Als je iets in het bestand wijzigt, vergeet dan niet om daarna het commando&lt;br /&gt;
&amp;lt;pre&amp;gt;postmap /etc/postfix/domains.relay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
uit te voeren.&lt;br /&gt;
&lt;br /&gt;
==== Whitelist ====&lt;br /&gt;
&lt;br /&gt;
Postfix kan gebruik maken van een whitelist. Zorg hiervoor dat er het volgende in /etc/postfix/main.cf staat:&lt;br /&gt;
&amp;lt;pre&amp;gt;smtpd_client_restrictions = check_client_access hash:/etc/postfix/client.access&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In het bestand /etc/postfix/client.access staat de lijst van alle domains die geweigerd en toegelaten worden. Als je hier iets in verandert, vergeet dan niet om uit te voeren&lt;br /&gt;
&amp;lt;pre&amp;gt;postmap /etc/postfix/access.client&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SquirrelMail ==&lt;br /&gt;
&lt;br /&gt;
SquirrelMail is een webmail-client.&lt;br /&gt;
&lt;br /&gt;
=== SquirrelMail installeren ===&lt;br /&gt;
&lt;br /&gt;
Installeer eerst natuurlijk Squirrelmail:&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install squirrelmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zorg ervoor dat httpd standaard aan staat en start httpd:&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&lt;br /&gt;
service httpd start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verander nu het volgende in /etc/squirrelmail/config.php:&lt;br /&gt;
&amp;lt;pre&amp;gt;$org_name        = &amp;quot;A-Eskwadraat&amp;quot;;&lt;br /&gt;
$org_logo        = SM_PATH . 'images/sm_logo.png';&lt;br /&gt;
$org_logo_width  = '308';&lt;br /&gt;
$org_logo_height = '111';&lt;br /&gt;
$org_title       = 'A-Eskwadraat SquirrelMail $version&amp;quot;;&lt;br /&gt;
$signout_page    = 'vm-mail.a-eskwadraat.nl';&lt;br /&gt;
&lt;br /&gt;
$domain            = 'circle.a-eskwadraat.nl';&lt;br /&gt;
$imapServerAddress = 'localhost';&lt;br /&gt;
$useSendmail       = false;&lt;br /&gt;
$smtpServerAddress = 'localhost';&lt;br /&gt;
$pop_before_smtp   = false;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zet nu het A-Eskwadraat logo in de squirrelmail config map.&lt;br /&gt;
&amp;lt;pre&amp;gt;setsebool -P httpd_can_network_connect 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RoundcubeMail ==&lt;br /&gt;
&lt;br /&gt;
Roundcube is ook een webmail client.&lt;br /&gt;
&lt;br /&gt;
=== Installeren ===&lt;br /&gt;
&lt;br /&gt;
Op vm-salt-master staat een configuratie voor een Roundcube mail VM met een korte readme. Deze zorgt ervoor dat httpd, roundcubemail en mariadb geinstalleerd staan. Salt een VM met deze configuratie.&lt;br /&gt;
&amp;lt;pre&amp;gt;salt '$hostname' state.highstate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laat vervolgens httpd van die VM door de firewall heen. Daarna moet de database voor Roundcube geinitialiseerd worden. Dit gaat met mysql.&lt;br /&gt;
&amp;lt;pre&amp;gt;CREATE DATABASE roundcubemail;&lt;br /&gt;
GRANT ALL PRIVILEGES on roundcubemail.* TO roundcube@localhost IDENTIFIED BY '$password';&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nu moet de timezone nog even ingesteld worden in /etc/php.ini op de roundcube VM. Daarna moeten er nog de juiste tables in de database worden gezet. Dit kan door op de nieuwe VM de bestanden in /etc/roundcubemail/databasefiles te runnen met mysql.&lt;br /&gt;
&amp;lt;pre&amp;gt;mysql roundcubemail &amp;lt; mysql.initial.sql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Mail</id>
		<title>Mail</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Mail"/>
				<updated>2021-02-22T20:52:46Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bij A–Eskwadraat gebruiken we '''Maildir''' voor de opslag van e-mail van gebruikers. We raden gebruikers aan om niet direct de Maildirmappen te benaderen, maar om dit via [http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol IMAP] of [http://www.washington.edu/alpine/ Alpine] te doen. De standaardconfiguratie van de meeste mailclients staat hier ook voor ingesteld.&lt;br /&gt;
Je kunt je mail bekijken op mail.a-eskwadraat.nl.&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
Op [[Haskell|haskell]] draait de virtuele machine vm-mailpp (spreek uit: mail plus plus) om het mailverkeer van en naar A-Eskwadraat te regelen:&lt;br /&gt;
&lt;br /&gt;
*[http://www.postfix.org/ postfix] (''/etc/postfix/'') verwerkt in principe alle binnenkomende mails, en wat er waarheen doorgestuurd moet worden;&lt;br /&gt;
*[http://www.dovecot.org/ dovecot] (''/etc/dovecot/'') neemt de POP- en IMAP-servers voor zijn rekening en verzorgt authenticatie voor het versturen van mails;&lt;br /&gt;
*[https://www.amavis.org/ amavis] (''/etc/amavisd/'') geeft alle binnenkomende mails door aan SpamAssassin en ClamAV om gefilterd te worden;&lt;br /&gt;
*[http://spamassassin.apache.org/ SpamAssassin] (''/etc/mail/spamassassin/'') [[Mailfiltering|filtert]] de spam uit het binnenkomende mailverkeer;&lt;br /&gt;
*[http://http://www.clamav.net/lang/en/ ClamAV] (''/etc/clamd.d/'') scant het mailverkeer voor virussen en dergelijke;&lt;br /&gt;
*[https://roundcube.net/ RoundCube] (''/etc/roundcubemail/'', ''/usr/share/roundcubemail'') is een webmailclient die in een [https://www.apache.org/ apache] webserver op vm-mailpp draait;&lt;br /&gt;
*[http://www.list.org/ Mailman] (''/etc/mailman/'') Mailman is verantwoordelijk voor de mailing lists, zoals de BBCie-announce.&lt;br /&gt;
&lt;br /&gt;
== Naamgeving Maildirmappen ==&lt;br /&gt;
&lt;br /&gt;
Let op dat om voor dovecot begrijpbare namen te hebben, de mappen op in ''~/Maildir'' altijd met een punt moeten beginnen. Submappen werken ook op deze manier. Een paar voorbeelden:&lt;br /&gt;
&lt;br /&gt;
*''~/Maildir/.Intro/'' voor de IMAP-map ''Intro'';&lt;br /&gt;
*''~/Maildir/.Sysop.postmaster/'' voor de map ''postmaster'' als submap van ''Sysop''.&lt;br /&gt;
&lt;br /&gt;
Als de mappen via IMAP worden aangemaakt gebeurt dit automatisch.&lt;br /&gt;
&lt;br /&gt;
== Postfix ==&lt;br /&gt;
&lt;br /&gt;
Postfix is de SMTP server voor de vm-mailpp.&lt;br /&gt;
&lt;br /&gt;
Postfix gebruikt meerdere ports om mail te ontvangen en te verwerken. Mail die wordt gestuurd door leden moet naar de SMTP daemon op port 587 (''submission'' poort) worden gestuurd. Authenticatie en TLS encryptie zijn een vereiste op deze verbinding. In de toekomst zal de [[Router|Router]] de encryptie tussen client en mail-server regelen. Alle andere mail komt binnen op port 25. Spam- en virus-filtering gebeurd via de SMTP daemons op ports 10025 en 10027 voor onbekende en bekende mail, respectievelijk.&lt;br /&gt;
&lt;br /&gt;
In ''/etc/postfix/master.cf'' staat de configuratie van deze daemons. De configuratie in ''/etc/postfix/main.cf'' wordt gebruikt voor zaken die niet in ''master.cf'' zijn opgegeven; in principe staat hier de configuratie voor poort 25 en worden de opties specifiek voor de andere poorten opgegeven in ''master.cf''.&lt;br /&gt;
&lt;br /&gt;
Een bug/feature van postfix die slecht gedocumenteerd is, is als volgt: wanneer postfix langer dan 10 seconden duurt over het authentiseren van een email, wordt deze geweigerd met een verkeerde foutmelding: &amp;quot;535 5.7.8 Error: authentication failed: Connection lost to authentication server (SMTP AUTH failed with the remote server)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Transport ===&lt;br /&gt;
&lt;br /&gt;
Eerst checkt Postfix of de inkomende mail aan een lokaal mailadres is gestuurd. Welke domeinen als 'lokaal' worden bestempeld staat in ''/etc/postfix/domains/local''. Voor lokale mailadressen geldt, dat het domein in de verdere configuratie kan worden weggelaten.&amp;lt;br/&amp;gt;Daarna checkt Postfix of de inkomende mail naar een virtueel domein is gestuurd. Mailadressen van domeinen zoals turingslegacy.nl worden herschreven naar lokale mailadressen (zonder domeinnaam). De virtuele domeinen staan in ''/etc/postfix/domains/virtual''.&lt;br /&gt;
&lt;br /&gt;
De overblijvende adressen, worden opgezocht in de bestanden met aliases in /etc/postfix/aliases, om te zien of de mail toevallig naar een ander lokaal mailadres doorgestuurd moet worden. Postfix gebruikt hiervoor de bestanden in .db formaat, de tekstbestanden zonder extensie zijn voor ons als sysop leesbaar en te bewerken maar moeten wel met ''postalias'' in een .db bestand omgezet worden naar iedere wijziging.&amp;lt;br/&amp;gt;Als iemand dit vergeet na het aanpassen van een bestand met aliases, plaatst postfix een melding in ''/var/log/maillog'': &amp;quot;database file ''bestandsnaam''.db is older than source file ''bestandsnaam''&amp;quot;.&amp;lt;br/&amp;gt;Nu blijven er als het goed is, alleen gebruikersnamen over die op het systeem bestaan. Voor deze gebruikers wordt het bestand ''.forward'' in de homedirectory van de gebruiker opgezocht.&lt;br /&gt;
&lt;br /&gt;
Als in een ''.forward'' bestand de gebruikersnaam voorafgegaan door een backslash (\) wordt aangetroffen, wordt de mail in de Maildir map van die gebruiker geplaatst. Als een regel met een pipe (|) wordt aangetroffen, wordt het mailbericht doorgegeven als standard input aan het commando dat achter het |-teken staat. Andere regels met tekst worden geïnterpreteerd als mailadressen (lokaal zonder domeinnaam of willekeurig mailadres met domeinnaam) waarnaar de mail moet worden doorgestuurd.&amp;lt;br/&amp;gt;''Let op bij het gebruiken van de pipe (|): het kan zijn dat SELinux niet toestaat dat postfix een ander programma direct aanroept.''&lt;br /&gt;
&lt;br /&gt;
Als de mail niet bij een lokaal of virtueel adres hoort, checkt postfix of de inkomende mail is gestuurd naar een domein waarvoor A-Eskwadraat mail relayet. Deze mail word onveranderd naar de mailserver van dat domein verstuurd (relaying). Dit voorkomt verlies van mail voor het externe domein wanneer hun mailserver uitvalt, aangezien A-Eskwadraat de secondary mailserver is voor dat domein. Een uitzondering op de regel is mail bedoeld voor de webserver. Mail aan de webcie komt binnen op de mail server, maar moet worden doorgestuurd naar de webserver. De verwijzingen zijn te vinden in ''/etc/postfix/transport_www'' en ''/etc/postfix/transport_regex''.&lt;br /&gt;
&lt;br /&gt;
Let op dat deze uitleg heel erg bot is. Lees de relevante ''man'' pages van Postfix om te leren hoe mail word verwerkt. Let op dat veranderingen in een alias/transport/domain map niet worden opgemerkt tot het ''postmap'' of ''postalias'' op het bestand is aangeroepen!&lt;br /&gt;
&lt;br /&gt;
=== Mail Authorisatie ===&lt;br /&gt;
&lt;br /&gt;
Om te controleren of een gebruiker wel als een adres mag mailen wordt gebruik gemaakt van de smtpd_sender_login_maps optie voor postfix, die in een database de users opzoekt die als gegeven adres mogen versturen.&amp;amp;nbsp;Als er via SMTP een request gedaan wordt om van buitenaf een mail te versturen doet postfix een query en kijkt welke users als die alias mail mogen versturen. Deze config is op de vm-mailpp te vinden in `/etc/postfix/alias_auth.cf`.&lt;br /&gt;
&lt;br /&gt;
De database wordt gegenereerd door een python script die op de vm-sysop staat bij de sysop api, aangezien daar de mail aliases al staan voor de alias_check. Het python script, te vinden in `/var/www/html/api/python/mail-authorization.py`, loopt recursief langs alle users die in cies, bestuur, extern of iba zitten en kijkt daarnaast ook naar mail aliassen. Aan de hand hiervan wordt met een sql query alle transitieve relaties expliciet gemaakt, zodat dit niet runtime gedaan moet worden. Als een alias naar een cie wordt doorgestuurd, en een user weer in die cie zit, wil je dat die user ook als die alias mag mailen. Als database wordt PostgreSQL gebruikt op de vm-database. De database die gebruikt wordt heet &amp;quot;mail&amp;quot;. In de python code staan nog wat comments. Er draait op de vm-sysop een cron die af en toe de database refreshed. Daarnaast is het python script ook intern bereikbaar [http://vm-sysop.a-eskwadraat.nl/api/python/mail-authorization.py hier]. Bij het laden van deze pagina wordt de database gerefreshed. Op deze manier kan de database meteen gerefreshed worden zodra iemand toegevoegd is aan een cie. Als er in een alias een wildcard staat (*@bapc.eu: bapc), wat betekend dat alles van het domein bapc.eu naar de bapc commissie wordt gestuurd, wordt dit omgezet naar een SQL wildcard, wat uiteindelijk dus netjes werkt.&lt;br /&gt;
&lt;br /&gt;
Er is reeds voorgekomen dat de cache van mailpp niet verversd werd waardoor er geen permissions kwamen voor gebruikers.&lt;br /&gt;
&lt;br /&gt;
Als gebruiker x mag mailen als y@a-eskwadraat.nl, dan komen in de database de entries (x, y@a-eskwadraat.nl), (x@a-eskwadraat.nl, y) en (x@a-eskwadraat.nl, y@a-eskwadraat.nl) te staan. Dit omdat dingen soms worden opgevraagd met domain en soms zonder.&lt;br /&gt;
&lt;br /&gt;
=== Mailfiltering ===&lt;br /&gt;
&lt;br /&gt;
Postfix maakt gebruik van amavisd voor het filteren van de inkomende mail. Amavis is een interface voor SpamAssassin welke spam filtert en ClamAV welke mails op virussen scant. Check de configuratie op [[Vm-saltmaster|vm-saltmaster]] voor details.&lt;br /&gt;
&lt;br /&gt;
Om de virus database up te daten:&lt;br /&gt;
&amp;lt;pre&amp;gt;freshclam&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mailman ==&lt;br /&gt;
&lt;br /&gt;
Mailman is verantwoordelijk voor de infrastructuur van de mailing lists. De mailing lists zijn te vinden op [lists.a-eskwadraat.nl/mailman lists.a-eskwadraat.nl/mailman]. Er zijn twee belangrijke services om mailman te draaien: mailman en httpd. De configuratie van mailman bevind zich in ''/etc/mailman/'', de data bevind zich in ''/var/lib/mailman'', en de binaries bevinden zich in ''/usr/lib/mailman''.&lt;br /&gt;
&lt;br /&gt;
Gebruik de scripts in /usr/lib/mailman/bin om de mailing lists vanaf de command-line te wijzigen. De volgende commando's zijn belangrijk bij het debuggen / migreren van mailman:&lt;br /&gt;
&lt;br /&gt;
*check_perms: repareert de bestandsrechten van mailman-specifieke bestanden.&lt;br /&gt;
*with_list &amp;amp; fix_url: repareert de links van de mailman archieven indien deze zijn veranderd.&lt;br /&gt;
&lt;br /&gt;
Lees de [http://wiki.list.org/DOC/4.09%20Summary%20of%20the%20mailman%20bin%20commands MailmanWiki] voor een samenvatting van alle commands.&lt;br /&gt;
&lt;br /&gt;
Mailman werkt samen met de Postfix mailserver via de alias map ''/etc/mailman/aliases''. Voer het volgende commando uit na het toevoegen/verwijderen van een lijst zodat Postfix zijn alias database update:&lt;br /&gt;
&amp;lt;pre&amp;gt;postalias /etc/mailman/aliases&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na een migratie van de mailman lijsten is het belangrijk om ''restorecon'' uit te voeren op ''/var/lib/mailman''. Mailman en SELinux werken prima samen zolang de rechten maar goed staan.&lt;br /&gt;
&amp;lt;pre&amp;gt;# Samenvatting van een Mailman migratie.&lt;br /&gt;
# Op de nieuwe mailserver.&lt;br /&gt;
rsync -azv -e &amp;quot;ssh -i &amp;lt;sshkey&amp;gt;&amp;quot; &amp;lt;OUDEHOST&amp;gt;:/var/lib/mailman/ /var/lib/mailman/&lt;br /&gt;
restorecon -r /var/lib/mailman/&lt;br /&gt;
cd /usr/lib/mailman/&lt;br /&gt;
bin/check_perms -f&lt;br /&gt;
bin/withlist -l -a -r fix_url&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dovecot ==&lt;br /&gt;
&lt;br /&gt;
Dovecot is de IMAP server verantwoordelijk voor het ophalen en beheren van de mail opgeslagen in de homedirs. Mail wordt opgeslagen in de .Maildir van een gebruik zijn home directory. De server luistert op poort 143 (standaard IMAP poort) en vereist een TLS-encrypted verbinding van de gebruiker. Het certificaat voor de verbinding is anders dan het certificaat van de webserver.&amp;amp;nbsp; Dovecot authenticeert gebruikers door middel van LDAP. Dovecot werkt ook als authenticatie-server voor postfix door middel van een open socket. Een SELinux module is vereist om Postfix toegang te geven tot de socket.&lt;br /&gt;
&lt;br /&gt;
Voor meer configuratie details, zie de configuratie op de salt-master. (CentOS 6: /srv/salt/centos/vm-mail/dovecot, CentOS 7: /srv/salt/centos7/dovecot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AL DE CONFIGURATIE HIERONDER IS GIGANTISCH OUT OF DATE''' \/\/\/&lt;br /&gt;
&lt;br /&gt;
== Configuratie mailfilters ==&lt;br /&gt;
&lt;br /&gt;
Gebruik je een ''.forward'' of ''.procmailrc'' om e-mail direct in mappen te stoppen, let dan op de naamgeving (zie hierboven) en zorg ervoor dat de mappen altijd op een ''/'' eindigen. Begin je ''.procmailrc'' ook altijd met de regel&lt;br /&gt;
&lt;br /&gt;
 MAILDIR=$HOME/Maildir/&lt;br /&gt;
&lt;br /&gt;
om te zorgen dat e-mail toch niet in ''/var/mail'' terechtkomt.&lt;br /&gt;
&lt;br /&gt;
== Maak een mailserver met exim, en dovecot ==&lt;br /&gt;
&lt;br /&gt;
Zorg eerst dat sendmail uit staat!&lt;br /&gt;
&amp;lt;pre&amp;gt;service sendmail stop&lt;br /&gt;
chkconfig sendmail off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bij voorkeur verwijder je ook de package voor [[Postfix|postfix]]. Deze is standaard bij CentOS geïnstalleerd.&lt;br /&gt;
&lt;br /&gt;
=== Exim ===&lt;br /&gt;
&lt;br /&gt;
Exim is een MTA (Mail Transfer Agent) en is ervoor om mailtjes te versturen, ontvangen, en doorsturen. Dit gebeurd uiteraard op de mailserver!&lt;br /&gt;
&lt;br /&gt;
Installeer allereerst exim op de host.&lt;br /&gt;
&amp;lt;pre&amp;gt;# yum install exim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verander vervolgens het configuratie bestand /etc/exim/exim.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Het Mail domain - normaal gesproken a-eskwadraat.nl&lt;br /&gt;
primary_hostname = circle.a-eskwadraat.nl&lt;br /&gt;
&lt;br /&gt;
# Weiger met ipv6 te werken.&lt;br /&gt;
local_interfaces = 0.0.0.0&lt;br /&gt;
disable_ipv6 = true&lt;br /&gt;
&lt;br /&gt;
daemon_smtp_ports = smtp&amp;amp;nbsp;: submission&lt;br /&gt;
accept_8bitmime = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Lijsten van geldige mail domainin.&lt;br /&gt;
domainlist mailman_domains = CONFDIR/domains.mailman&lt;br /&gt;
domainlist local_domains = @&amp;amp;nbsp;: CONFDIR/domains.local&amp;amp;nbsp;: +mailman_domains&amp;amp;nbsp;: lsearch;CONFDIR/domains.virtual&lt;br /&gt;
domainlist relay_to_domains = CONFDIR/domains.relay&lt;br /&gt;
&lt;br /&gt;
hostlist relay_from_hosts = 10.14.3.0/22&lt;br /&gt;
&lt;br /&gt;
# Backup mail server in het geval dat onze niet werkt.&lt;br /&gt;
hostlist mx_hosts = mail.wolffelaar.nl&lt;br /&gt;
&lt;br /&gt;
qualify_domain = A-Eskwadraat.nl&lt;br /&gt;
&lt;br /&gt;
queue_run_max = 250&lt;br /&gt;
&lt;br /&gt;
smtp_accept_max = 100&lt;br /&gt;
smtp_accept_max_per_host = ${if match_ip{$sender_host_address}{+mx_hosts}{50}{10}}&lt;br /&gt;
&lt;br /&gt;
received_headers_max = 30&lt;br /&gt;
&lt;br /&gt;
RETRY_SECONDARY=F,90d,15m&lt;br /&gt;
RETRY_REST=F,2h,15m; G,16h,2h,1.5; F,4d,8h&lt;br /&gt;
&lt;br /&gt;
acl_smtp_rcpt = acl_check_rcpt&lt;br /&gt;
acl_not_smtp_start = acl_check_not_smtp&lt;br /&gt;
acl_smtp_data = acl_check_data&lt;br /&gt;
&lt;br /&gt;
host_lookup = *&lt;br /&gt;
helo_try_verify_hosts =&amp;amp;nbsp;!@&amp;amp;nbsp;:&amp;amp;nbsp;!@[]&lt;br /&gt;
helo_allow_chars = _&lt;br /&gt;
&lt;br /&gt;
# ClamAV - The Anti-Virus Scanner&lt;br /&gt;
av_scanner = clamd:/var/run/clamav/clamd.sock&lt;br /&gt;
&lt;br /&gt;
# Custom 5s limiet.&lt;br /&gt;
rfc1413_query_timeout = 5s&lt;br /&gt;
&lt;br /&gt;
# Mailman support, als per /usr/share/doc/mailman/README.EXIM.gz&lt;br /&gt;
MAILMAN_HOME=/var/lib/mailman&lt;br /&gt;
MAILMAN_WRAP=/usr/lib/mailman/mail/mailman&lt;br /&gt;
MAILMAN_USER=mailman&lt;br /&gt;
MAILMAN_GROUP=mailman&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dovecot ===&lt;br /&gt;
&lt;br /&gt;
Dovecot is een IMAP en POP3 server, wat inhoud dat het mailtjes kan ontvangen, iets wat best wel handig is om te hebben. Installeer dovecot op je mailserver als je dat nog niet gedaan hebt. Verander dan nu het volgende:&lt;br /&gt;
&lt;br /&gt;
In /etc/dovecot/dovecot.conf:&lt;br /&gt;
&lt;br /&gt;
*protocols = imap&lt;br /&gt;
*login_trusted_networks = &amp;amp;lt;ip-adressen die je vertrouwd&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In /etc/dovecot/conf.d/10-mail.conf&lt;br /&gt;
&lt;br /&gt;
*mail_location = maildir:~/Maildir&lt;br /&gt;
*lock_method = dotlock&lt;br /&gt;
&lt;br /&gt;
In /etc/dovecot/conf.d/10-auth.conf&lt;br /&gt;
&lt;br /&gt;
*disable_plaintext_auth = no&lt;br /&gt;
*auth_realms = aeskwadraat&lt;br /&gt;
*auth_default_realm = aeskwadraat&lt;br /&gt;
*auth_gssapi_hostname = &amp;amp;lt;ipa-server&amp;amp;gt;&lt;br /&gt;
*auth_krb5_keytab = /etc/dovecot/krb5.keytab&lt;br /&gt;
*auth_mechanisms = plain gssapi&lt;br /&gt;
&lt;br /&gt;
en zet op het einde&lt;br /&gt;
&amp;lt;pre&amp;gt;userdb {&lt;br /&gt;
  driver = static&lt;br /&gt;
  args = uid=dovecot gid=dovecot home=/var/spool/mail/%u&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maak nu op de ipa-server een service imap aan met de mailserver als host. Dit kan je doen via de webinterface. Voer vervolgens het volgende uit op de mailserver:&lt;br /&gt;
&amp;lt;pre&amp;gt;kinit admin&lt;br /&gt;
ipa-getkeytab -s &amp;lt;ipa-server&amp;gt; -p imap/&amp;lt;mailserver&amp;gt; -k /etc/dovecot/krb5.keytab&lt;br /&gt;
chown root:dovecot /etc/dovecot/krb5.keytab&lt;br /&gt;
chmod 640 /etc/dovecot/krb5.keytab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart dovecot en zet hem standaard aan:&lt;br /&gt;
&amp;lt;pre&amp;gt;service dovecot restart&lt;br /&gt;
chkconfig dovecot on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zet tenslotte nog met system-config-firewall-tui 'imap over ssl' en 'mail (smtp)' aan, en voila! Je kan nu met ipa-users gebruik maken van IMAP om mailtjes te ontvangen!&lt;br /&gt;
&lt;br /&gt;
Je kan eventueel in /etc/postfix/main.cf en /etc/dovecot/conf.d/10-mail.conf nog het een ander van waar de mail wordt opgeslagen veranderen.&lt;br /&gt;
&lt;br /&gt;
=== Spamassassin ===&lt;br /&gt;
&lt;br /&gt;
Spamassassin is een mailfilteringprogramma voor spam. Om het te installeren:&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install spamassassin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maak nu de user en group spamd aan:&lt;br /&gt;
&amp;lt;pre&amp;gt;groupadd -g 5001 spamd&lt;br /&gt;
useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd&lt;br /&gt;
mkdir /var/lib/spamassassin&lt;br /&gt;
chown spamd:spamd /var/lib/spamassassin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zet dan het volgende in /etc/mail/spamassassin/local.cf:&lt;br /&gt;
&amp;lt;pre&amp;gt;required_score 5.0&lt;br /&gt;
report_safe 0&lt;br /&gt;
rewrite_header Subject [***SPAM***]&lt;br /&gt;
&lt;br /&gt;
# Enable the Bayes system&lt;br /&gt;
use_bayes 1&lt;br /&gt;
use_bayes_rules 1&lt;br /&gt;
# Enable Bayes auto-learning&lt;br /&gt;
bayes_auto_learn 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verander nu in /etc/postfix/master.cf&lt;br /&gt;
&amp;lt;pre&amp;gt;smtp      inet  n       -       n       -       -       smtpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&amp;lt;pre&amp;gt;smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamassassin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
en stop op het einde van master.cf:&lt;br /&gt;
&amp;lt;pre&amp;gt;spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart nu spamassassin en postfix:&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig spamassassin on&lt;br /&gt;
service spamassassin restart&lt;br /&gt;
service postfix restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
&lt;br /&gt;
In postfix staan de locaties van de aliases in /etc/postfix/main.cf. Deze kan je vinden bij de regel 'alias_maps = ...'. Als je een nieuw aliasbestand wilt toevoegen, voeg dit dan ook toe bij deze regel als hash:&amp;amp;lt;bestandslocatie&amp;amp;gt;. Vergeet ook niet om dit toe te voegen bij alias_database!.&lt;br /&gt;
&lt;br /&gt;
De aliases zelf staan geconfigureerd in de aliasbestanden die te vinden zijn onder /etc/postfix/alias/. Als je een nieuwe alias in een bestand hebt gezet moet je het db-bestand up-to-date make door het commando 'postalias *bestand*' uitvoeren. Let erop dat de bestandsnaam de naam van het bestand is wat je gewijzigd hebt, niet een bestand met extensie '.db'.&lt;br /&gt;
&lt;br /&gt;
Op het moment van schrijven hebben we 4 alias bestanden (bestuur, cies, mensjes en standaard). Als je een alias toevoegt of veranderd doe je dit in het bijbehorende alias bestand (bestuur gerelateerde aliassen in &amp;quot;bestuur&amp;quot;, cies gerelateerde aliassen in &amp;quot;cies&amp;quot;, etc.).&lt;br /&gt;
&lt;br /&gt;
Als voorbeeld gaan we de alias sokken@a-eskwadraat aanmaken voor Michal en Rosanne. Dit is niet bestuur of cies gerelateerd dus zetten we deze alias in het bestand mensjes. Navigeer naar /etc/postfix/alias en open het bestand mensjes. Je begint met de alias gevolgd door een dubbele punt en dan A-eskwadraat gebruikersnaam(en) waarvoor de alias bedoeld is. In het geval van sokken@a-eskwadraat komt dat er dus als volgt uit te zien:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sokken: michalj, rosanne&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vervolgens moet deze wijziging nog in de database gezet worden dit gebeurt met: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;postalias mensjes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nu gaan de mailtjes die binnenkomen op sokken@a-eskwadraat naar Michal en Rosanne!&lt;br /&gt;
&lt;br /&gt;
==== Lijst van alle forwards maken ====&lt;br /&gt;
&lt;br /&gt;
===== Stap 1 =====&lt;br /&gt;
&lt;br /&gt;
Maak een lijst die voor elke alias geeft waar het naar geforward wordt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;postalias -s [naam database bestand (zonder .db)]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Het onderstaande lijstje moeten we handmatig meenemen en is gebaseerd op de aliassen in het standaard.db bestand:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
abuse:  postmaster&lt;br /&gt;
backup: root&lt;br /&gt;
hostmaster:     root&lt;br /&gt;
irc:    root&lt;br /&gt;
list:   root&lt;br /&gt;
listmaster:     root&lt;br /&gt;
logcheck:       root&lt;br /&gt;
postmaster:     sysop-postmaster, sysop&lt;br /&gt;
root:   sysop&lt;br /&gt;
selinux:        root&lt;br /&gt;
webmaster:      webcie&lt;br /&gt;
www-data:       webcie&lt;br /&gt;
mailer-daemon:  postmaster&lt;br /&gt;
mailman-owner:  listmaster&lt;br /&gt;
majordom:       root&lt;br /&gt;
uucp:   root&lt;br /&gt;
www-dmz:        webmaster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Instellingen ==&lt;br /&gt;
&lt;br /&gt;
=== Postfix ===&lt;br /&gt;
&lt;br /&gt;
==== Mail relay ====&lt;br /&gt;
&lt;br /&gt;
Postfix kan mail relayen naar een extern domein. Hiervoor is de volgende regel:&lt;br /&gt;
&amp;lt;pre&amp;gt;relay_domains = $mydestination, hash:/etc/postfix/domains.relay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In het bestand /etc/postfix/domains.relay staat de lijst van alle externe domains waar mail naar toe gerelayed wordt. Als je iets in het bestand wijzigt, vergeet dan niet om daarna het commando&lt;br /&gt;
&amp;lt;pre&amp;gt;postmap /etc/postfix/domains.relay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
uit te voeren.&lt;br /&gt;
&lt;br /&gt;
==== Whitelist ====&lt;br /&gt;
&lt;br /&gt;
Postfix kan gebruik maken van een whitelist. Zorg hiervoor dat er het volgende in /etc/postfix/main.cf staat:&lt;br /&gt;
&amp;lt;pre&amp;gt;smtpd_client_restrictions = check_client_access hash:/etc/postfix/client.access&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In het bestand /etc/postfix/client.access staat de lijst van alle domains die geweigerd en toegelaten worden. Als je hier iets in verandert, vergeet dan niet om uit te voeren&lt;br /&gt;
&amp;lt;pre&amp;gt;postmap /etc/postfix/access.client&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SquirrelMail ==&lt;br /&gt;
&lt;br /&gt;
SquirrelMail is een webmail-client.&lt;br /&gt;
&lt;br /&gt;
=== SquirrelMail installeren ===&lt;br /&gt;
&lt;br /&gt;
Installeer eerst natuurlijk Squirrelmail:&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install squirrelmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zorg ervoor dat httpd standaard aan staat en start httpd:&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&lt;br /&gt;
service httpd start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verander nu het volgende in /etc/squirrelmail/config.php:&lt;br /&gt;
&amp;lt;pre&amp;gt;$org_name        = &amp;quot;A-Eskwadraat&amp;quot;;&lt;br /&gt;
$org_logo        = SM_PATH . 'images/sm_logo.png';&lt;br /&gt;
$org_logo_width  = '308';&lt;br /&gt;
$org_logo_height = '111';&lt;br /&gt;
$org_title       = 'A-Eskwadraat SquirrelMail $version&amp;quot;;&lt;br /&gt;
$signout_page    = 'vm-mail.a-eskwadraat.nl';&lt;br /&gt;
&lt;br /&gt;
$domain            = 'circle.a-eskwadraat.nl';&lt;br /&gt;
$imapServerAddress = 'localhost';&lt;br /&gt;
$useSendmail       = false;&lt;br /&gt;
$smtpServerAddress = 'localhost';&lt;br /&gt;
$pop_before_smtp   = false;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zet nu het A-Eskwadraat logo in de squirrelmail config map.&lt;br /&gt;
&amp;lt;pre&amp;gt;setsebool -P httpd_can_network_connect 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RoundcubeMail ==&lt;br /&gt;
&lt;br /&gt;
Roundcube is ook een webmail client.&lt;br /&gt;
&lt;br /&gt;
=== Installeren ===&lt;br /&gt;
&lt;br /&gt;
Op vm-salt-master staat een configuratie voor een Roundcube mail VM met een korte readme. Deze zorgt ervoor dat httpd, roundcubemail en mariadb geinstalleerd staan. Salt een VM met deze configuratie.&lt;br /&gt;
&amp;lt;pre&amp;gt;salt '$hostname' state.highstate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laat vervolgens httpd van die VM door de firewall heen. Daarna moet de database voor Roundcube geinitialiseerd worden. Dit gaat met mysql.&lt;br /&gt;
&amp;lt;pre&amp;gt;CREATE DATABASE roundcubemail;&lt;br /&gt;
GRANT ALL PRIVILEGES on roundcubemail.* TO roundcube@localhost IDENTIFIED BY '$password';&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nu moet de timezone nog even ingesteld worden in /etc/php.ini op de roundcube VM. Daarna moeten er nog de juiste tables in de database worden gezet. Dit kan door op de nieuwe VM de bestanden in /etc/roundcubemail/databasefiles te runnen met mysql.&lt;br /&gt;
&amp;lt;pre&amp;gt;mysql roundcubemail &amp;lt; mysql.initial.sql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/SSL</id>
		<title>SSL</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/SSL"/>
				<updated>2020-08-10T13:01:45Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Uitleg ==&lt;br /&gt;
&lt;br /&gt;
SSL wordt gebruikt om netwerk verbindingen te beveiligingen, zoals http en imap verkeer. Hiertoe gebruiken we bij a-eskwadraat een reverse proxy die het verkeer versleuteld voor de buitenwereld.&lt;br /&gt;
&lt;br /&gt;
Voor het certificaat van A-Eskwadraat maken we op dit moment gebruik van xolphin: [https://www.sslcertificaten.nl/ https://www.sslcertificaten.nl/]&lt;br /&gt;
&lt;br /&gt;
== Wachtwoord van certificaat halen ==&lt;br /&gt;
&lt;br /&gt;
Indien de private key is beveiligd met een wachtwoord, dan is dit wachtwoord ook nodig bij het opstarten. Dit kan vervelend zijn wanneer de server opnieuw opstart zonder dat iemand ter plaatse is om het wachtwoord in te tikken. Het wachtwoord kan met het volgende commando worden verwijderd. Zorg hierbij dat de shell zich bevindt in de map waarin de private key staat opgeslagen:&lt;br /&gt;
&lt;br /&gt;
 [root@server cert]# openssl rsa -in encrypted_private_key.key -out private_key.key&lt;br /&gt;
&lt;br /&gt;
Vervang hierbij encrypted_private_key.key met de naam van de private key, en vervang private_key.key met de gewenste bestandsnaam voor de nieuwe private key zonder wachtwoord.&lt;br /&gt;
&lt;br /&gt;
== Aanmaken CSR ==&lt;br /&gt;
&lt;br /&gt;
=== stap 1 ===&lt;br /&gt;
&lt;br /&gt;
Maak met behulp van SSH verbinding met de server en log in als root. Ga met behulp van het cd-commando naar de map toe waar de certificaten moeten worden bewaard:&lt;br /&gt;
&lt;br /&gt;
 [root@server]# cd /etc/ssl/cert/&lt;br /&gt;
&lt;br /&gt;
=== stap 2 ===&lt;br /&gt;
&lt;br /&gt;
Met het volgende commando kunnen de Private Key en de CSR worden gegenereerd:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;font-family: monospace, Courier;  padding: 1em;  border-color: rgb(221, 221, 221);  color: rgb(0, 0, 0);  line-height: 1.1em;  font-size: 12.6999998092651px;  background-color: rgb(249, 249, 249)&amp;quot;&amp;gt;[root@server]# openssl req -nodes -newkey rsa:2048 \&lt;br /&gt;
-keyout a-eskwadraat_nl.`date +%Y%m%d`.key \&lt;br /&gt;
-out a-eskwadraat_nl.`date +%Y%m%d`.csr \&lt;br /&gt;
-subj '/C=NL/ST=Utrecht/L=Utrecht/O=A-Eskwadraat/OU=Sysop/CN=*.a-eskwadraat.nl/emailAddress=sysop@a-eskwadraat.nl'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== stap 3 ===&lt;br /&gt;
&lt;br /&gt;
OpenSSL genereert twee bestanden: de Private Key (met als naam a-eskwadraat_nl.{datum}.key) en de CSR (met als naam a-eskwadraat_nl.{datum}.csr).&lt;br /&gt;
&lt;br /&gt;
=== stap 4 ===&lt;br /&gt;
&lt;br /&gt;
Beveilig de certificaatbestanden zodat niemand behalve de rootgebruiker erbij kan:&lt;br /&gt;
&lt;br /&gt;
 [root@server cert]# chmod 600 *.key *.csr&lt;br /&gt;
&lt;br /&gt;
=== stap 6 ===&lt;br /&gt;
&lt;br /&gt;
Nu kan de CSR met behulp van het cat-commando worden weergegeven:&lt;br /&gt;
&lt;br /&gt;
 [root@server cert]# cat a-eskwadraat_nl.`date +%Y%m%d`.csr &lt;br /&gt;
&lt;br /&gt;
De velden emailadres, optionele bedrijfsnaam en uitwisselingswachtwoord kunnen leeggelaten worden bij het aanvragen van een SSL certificaat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IPA SSL intern ==&lt;br /&gt;
&lt;br /&gt;
Hier staat eigenlijk alles dat je moet weten: [http://www.freeipa.org/page/Apache_SNI_With_Kerberos http://www.freeipa.org/page/Apache_SNI_With_Kerberos] &amp;lt;br/&amp;gt;Het komt hier op neer (merk op dat 'dummyhost' de naam van de virtualhost is):&lt;br /&gt;
&lt;br /&gt;
 mkdir /etc/httpd/certs&lt;br /&gt;
 semanage fcontext -a -t cert_t '/etc/httpd/certs(/.*)?' &amp;amp;&amp;amp; restorecon -v /etc/httpd/certs&lt;br /&gt;
 ipa host-add dummyhost.example.com --desc=&amp;quot;Dummy Host&amp;quot; --location=&amp;quot;&amp;lt;fqdn-of-webserver&amp;gt;&amp;quot;&lt;br /&gt;
 ipa host-add-managedby dummyhost.example.com --hosts=&amp;quot;&amp;lt;fqdn-of-webserver&amp;gt;&amp;quot;&lt;br /&gt;
 ipa service-add HTTP/dummyhost.example.com&lt;br /&gt;
 ipa service-add-host HTTP/dummyhost.example.com --hosts=&amp;quot;&amp;lt;fqdn-of-webserver&amp;gt;&amp;quot;&lt;br /&gt;
 ipa-getcert request -r -f /etc/httpd/certs/dummyhost.crt -k /etc/httpd/certs/dummyhost.key -N CN=dummyhost.example.com -D \&lt;br /&gt;
   dummyhost.example.com -K HTTP/dummyhost.example.com&lt;br /&gt;
&lt;br /&gt;
Het zou kunnen dat je de package ipa-admintools moet installeren.&lt;br /&gt;
&lt;br /&gt;
== Let's Encrypt ==&lt;br /&gt;
&lt;br /&gt;
=== Stap 1 ===&lt;br /&gt;
&lt;br /&gt;
Inloggen op ernst.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stap 2 ===&lt;br /&gt;
&lt;br /&gt;
Certbot commando uitvoeren:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stap 3 ===&lt;br /&gt;
&lt;br /&gt;
Inloggen op vm-dns-auth.&lt;br /&gt;
&lt;br /&gt;
=== Stap 4 ===&lt;br /&gt;
&lt;br /&gt;
Twee TXT-records aanpassen in /etc/nsd/zones/a-eskwadaraat.nl.zone en timestamps aanpassen (van hele bestand).&lt;br /&gt;
&lt;br /&gt;
=== Stap 5 ===&lt;br /&gt;
&lt;br /&gt;
 service nsd restart&lt;br /&gt;
&lt;br /&gt;
Hierna uitloggen op vm-dns-auth.&lt;br /&gt;
&lt;br /&gt;
=== Stap 6 ===&lt;br /&gt;
&lt;br /&gt;
Ga verder met certbot script uit stap 2.&lt;br /&gt;
&lt;br /&gt;
=== Stap 7 ===&lt;br /&gt;
&lt;br /&gt;
 service nginx restart&lt;br /&gt;
&lt;br /&gt;
=== Stap 8 ===&lt;br /&gt;
&lt;br /&gt;
Certificaat kopiëren naar mail server.&lt;br /&gt;
&lt;br /&gt;
=== Stap 9 ===&lt;br /&gt;
&lt;br /&gt;
Profit.&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Savapage</id>
		<title>Savapage</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Savapage"/>
				<updated>2018-10-08T20:24:34Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:sysop]]&lt;br /&gt;
SavaPage is OSI Certified Open Source Software, copyright Datraverse B.V. and licensed under the terms of the GNU Affero General Public License (AGPL) version 3, or any later version.&lt;br /&gt;
&lt;br /&gt;
Savapage is het systeem wat het mogelijk maakt om printen vanaf een laptop mogelijk te maken, en bij te houden wie er print.&lt;br /&gt;
&lt;br /&gt;
Savapage draait op vm-cups, en heeft als service de rechten om te printen. Op dit moment (mei 2018) is het nog mogelijk om savapage te omzeilen en direct te printen.&lt;br /&gt;
&lt;br /&gt;
Instellingen van Savapage zijn aan te passen op printer.a-eskwadraat.nl/admin.&lt;br /&gt;
&lt;br /&gt;
De handleiding om te printen via savapage is te vinden op: #TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installatie ==&lt;br /&gt;
&lt;br /&gt;
Er is een handleiding beschikbaar voor de installatie van Savapage op https://www.savapage.org/docs/manual/ch-install.html&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/NextCloud</id>
		<title>NextCloud</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/NextCloud"/>
				<updated>2018-09-18T21:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: /* Installeer nextcloud */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installeer nextcloud ==&lt;br /&gt;
&lt;br /&gt;
yum install wget man unzip vim&lt;br /&gt;
&lt;br /&gt;
Centos 7 heeft standaard php-5 we installeren php-7&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install httpd&lt;br /&gt;
yum install mariadb-server&lt;br /&gt;
systemctl start mariadb&lt;br /&gt;
systemctl enable mariadb&lt;br /&gt;
mysql_secure_installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;yum install centos-release-scl&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;yum install rh-php70 rh-php70-php rh-php70-php-gd rh-php70-php-mbstring&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;yum install rh-php70-php-mysqlnd&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;yum install rh-php70-php-ldap&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ln -s /opt/rh/httpd24/root/etc/httpd/conf.d/rh-php70-php.conf /etc/httpd/conf.d/&lt;br /&gt;
ln -s /opt/rh/httpd24/root/etc/httpd/conf.modules.d/15-rh-php70-php.conf /etc/httpd/conf.modules.d/&lt;br /&gt;
ln -s /opt/rh/httpd24/root/etc/httpd/modules/librh-php70-php7.so /etc/httpd/modules/&lt;br /&gt;
&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
wget https://download.nextcloud.com/server/releases/nextcloud-x.y.z.tar.bz2.asc&lt;br /&gt;
wget https://nextcloud.com/nextcloud.asc&lt;br /&gt;
gpg --import nextcloud.asc&lt;br /&gt;
gpg --verify nextcloud-x.y.z.tar.bz2.asc nextcloud-x.y.z.tar.bz2&lt;br /&gt;
&lt;br /&gt;
yum install bzip2&lt;br /&gt;
tar -xjf nextcloud-x.y.z.tar.bz2&lt;br /&gt;
cp -r nextcloud /var/www&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the Apache configuration, create the file /etc/httpd/conf.d/nextcloud.conf and add the following lines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Alias /nextcloud &amp;quot;/var/www/html/nextcloud/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Directory /var/www/html/nextcloud/&amp;gt;&lt;br /&gt;
  Options +FollowSymlinks&lt;br /&gt;
  AllowOverride All&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IfModule mod_dav.c&amp;gt;&lt;br /&gt;
  Dav off&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 SetEnv HOME /var/www/html/nextcloud&lt;br /&gt;
 SetEnv HTTP_HOME /var/www/html/nextcloud&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See https://www.marksei.com/install-nextcloud-12-centos-7/ for instructions on creating database&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/NextCloud</id>
		<title>NextCloud</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/NextCloud"/>
				<updated>2018-09-18T21:00:38Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: /* Installeer nextcloud */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installeer nextcloud ==&lt;br /&gt;
&lt;br /&gt;
yum install wget man unzip vim&lt;br /&gt;
&lt;br /&gt;
Centos 7 heeft standaard php-5 we installeren php-7&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install httpd&lt;br /&gt;
yum install mariadb-server&lt;br /&gt;
systemctl start mariadb&lt;br /&gt;
systemctl enable mariadb&lt;br /&gt;
mysql_secure_installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;yum install centos-release-scl&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;yum install rh-php70 rh-php70-php rh-php70-php-gd rh-php70-php-mbstring&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;yum install rh-php70-php-mysqlnd&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;yum install rh-php70-php-ldap&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ln -s /opt/rh/httpd24/root/etc/httpd/conf.d/rh-php70-php.conf /etc/httpd/conf.d/&lt;br /&gt;
ln -s /opt/rh/httpd24/root/etc/httpd/conf.modules.d/15-rh-php70-php.conf /etc/httpd/conf.modules.d/&lt;br /&gt;
ln -s /opt/rh/httpd24/root/etc/httpd/modules/librh-php70-php7.so /etc/httpd/modules/&lt;br /&gt;
&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
wget https://download.nextcloud.com/server/releases/nextcloud-x.y.z.tar.bz2.asc&lt;br /&gt;
wget https://nextcloud.com/nextcloud.asc&lt;br /&gt;
gpg --import nextcloud.asc&lt;br /&gt;
gpg --verify nextcloud-x.y.z.tar.bz2.asc nextcloud-x.y.z.tar.bz2&lt;br /&gt;
&lt;br /&gt;
yum install bzip2&lt;br /&gt;
tar -xjf nextcloud-x.y.z.tar.bz2&lt;br /&gt;
cp -r nextcloud /var/www&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the Apache configuration, create the file /etc/httpd/conf.d/nextcloud.conf and add the following lines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Alias /nextcloud &amp;quot;/var/www/html/nextcloud/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Directory /var/www/html/nextcloud/&amp;gt;&lt;br /&gt;
  Options +FollowSymlinks&lt;br /&gt;
  AllowOverride All&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IfModule mod_dav.c&amp;gt;&lt;br /&gt;
  Dav off&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 SetEnv HOME /var/www/html/nextcloud&lt;br /&gt;
 SetEnv HTTP_HOME /var/www/html/nextcloud&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Fail2ban</id>
		<title>Fail2ban</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Fail2ban"/>
				<updated>2018-02-26T19:27:19Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fail2ban scant log files en bant adressen die verdachte kenmerken vertonen (bijvoorbeeld: Teveel foute inlog pogingen, zoeken naar exploits , etc). Fail2ban update de firewall regels vervolgens om het verdachte IP adres te weigeren voor een bepaalde tijds periode. Fail2ban vermindert de hoeveelheid incorrecte authenticatie pogingen, maar voorkomt niet het risico van slecht geïmplementeerde authenticatie mechanismes.&lt;br /&gt;
&lt;br /&gt;
Fail2ban draait op vm-sysop en is te vinden onder /etc/fail2ban. Met het command: /etc/init.d/fail2ban status kun je de status van fail2ban checken. De standaard configuratie en regels van fail2ban staan in jail.conf en aanpassingen die wij zelf hebben gemaakt staan in jail.local. De aanpassingen in jail.local overschrijven de standaard regels in jail.conf.  Als je een aanpassing maakt moet je dit dus in jail.local doen. Een voorbeeld van een regel in jail.local is:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ssh-aes]                          // Naam van de service&lt;br /&gt;
enabled  = true                    // Deze service wordt gemonitoord door fail2ban&lt;br /&gt;
filter   = sshd                    // De filter die de logs scant op een patroon (in de map filter.d)&lt;br /&gt;
action   = a-eskwadraat            // De actie die wordt uitgevoerd als de filter true returnt (in de map action.d)&lt;br /&gt;
logpath  = /var/log/secure         // De log file die gescant wordt door de filter&lt;br /&gt;
maxretry = 5                       // Het aantal keer dat de filter het patroon mag tegen komen voordat de ban actie wordt uitgevoerd   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In de map filter.d staan de filters voor services. Deze werken met behulp van reguliere expressies. Wanneer er in een log file een bepaald patroon voorkomt dat de reguliere expressie matcht wordt dit gezien als een foute log-in poging.&lt;br /&gt;
&lt;br /&gt;
In de map action.d staan acties die uitgevoerd worden op gedefineerde momenten. Actions zijn bijvoorbeeld het bannen en unbannen van een ip adres. Voorbeelden van een ban en unban action van de hierboven genoemde jail zijn:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
actionban = /usr/bin/ssh -i /root/.ssh/id_rsa_fail2ban_ban root@10.14.0.42 &amp;lt;ip&amp;gt;&lt;br /&gt;
actionunban = /usr/bin/ssh -i /root/.ssh/id_rsa_fail2ban_unban root@10.14.0.42 &amp;lt;ip&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbij is het belangrijk dat de ssh key die gebruikt wordt bepaald welke actie wordt uitgevoerd. Op ernst (de router) staan namelijk voor deze ssh keys in /root/.ssh/authorizedkeys specifieke commando's gedefinieerd.&lt;br /&gt;
Wat deze regels doen is met behulp van ipset ip's aan de groep &amp;quot;blacklist&amp;quot; toevoegen. Om ip adressen uit zo'n ipset groep te blacklisten moet er op ernst aan /etc/shorewall/blrules een regel worden toegevoegd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#ACTION		SOURCE		DEST&lt;br /&gt;
DROP            ext:+blacklist  all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
------------------------- STILL IN PROGRESS -------------------------&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Fail2ban</id>
		<title>Fail2ban</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Fail2ban"/>
				<updated>2018-02-20T22:28:53Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fail2ban scant log files en bant adressen die verdachte kenmerken vertonen (bijvoorbeeld: Teveel foute inlog pogingen, zoeken naar exploits , etc). Fail2ban update de firewall regels vervolgens om het verdachte IP adres te weigeren voor een bepaalde tijds periode. Fail2ban vermindert de hoeveelheid incorrecte authenticatie pogingen, maar voorkomt niet het risico van slecht geïmplementeerde authenticatie mechanismes.&lt;br /&gt;
&lt;br /&gt;
Fail2ban draait op vm-sysop en is te vinden onder /etc/fail2ban. Met het command: /etc/init.d/fail2ban status kun je de status van fail2ban checken. De standaard configuratie en regels van fail2ban staan in jail.conf en aanpassingen die wij zelf hebben gemaakt staan in jail.local. De aanpassingen in jail.local overschrijven de standaard regels in jail.conf.  Als je een aanpassing maakt moet je dit dus in jail.local doen. Een voorbeeld van een regel in jail.local is:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ssh-aes]                          // Naam van de service&lt;br /&gt;
enabled  = true                    // Deze service wordt gemonitoord door fail2ban&lt;br /&gt;
filter   = sshd                    // De filter die de logs scant op een patroon (in de map filter.d)&lt;br /&gt;
action   = a-eskwadraat            // De actie die wordt uitgevoerd als de filter true returnt (in de map action.d)&lt;br /&gt;
logpath  = /var/log/secure         // De log file die gescant wordt door de filter&lt;br /&gt;
maxretry = 5                       // Het aantal keer dat de filter het patroon mag tegen komen voordat de ban actie wordt uitgevoerd   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In de map filter.d staan de filters voor services. Deze werken met behulp van reguliere expressies. Wanneer er in een log file een bepaald patroon voorkomt dat de reguliere expressie matcht wordt dit gezien als een foute log-in poging.&lt;br /&gt;
&lt;br /&gt;
In de map action.d staan acties die uitgevoerd worden op gedefineerde momenten. Actions zijn bijvoorbeeld het bannen en unbannen van een ip adres. Voorbeelden van een ban en unban action van de hierboven genoemde jail zijn:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
actionban = /usr/bin/ssh -i /root/.ssh/id_rsa_fail2ban_ban root@10.14.0.42 &amp;lt;ip&amp;gt;&lt;br /&gt;
actionunban = /usr/bin/ssh -i /root/.ssh/id_rsa_fail2ban_unban root@10.14.0.42 &amp;lt;ip&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbij is het belangrijk dat de ssh key die gebruikt wordt bepaald welke actie wordt uitgevoerd. Op ernst (de router) staan namelijk voor deze ssh keys in /root/.ssh/authorizedkeys specifieke commando's gedefinieerd.&lt;br /&gt;
Wat deze regels doen is met behulp van ipset ip's aan de groep &amp;quot;blacklist&amp;quot; toevoegen. Om ip adressen uit zo'n ipset groep te blacklisten moet er op ernst aan /etc/shorewall/blrules een regel worden toegevoegd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#ACTION		SOURCE		DEST&lt;br /&gt;
DROP            ext:+blacklist  all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
------------------------- STILL IN PROGRESS -------------------------&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge</id>
		<title>Domjudge</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge"/>
				<updated>2017-10-09T23:19:05Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: /* Judgeserver &amp;amp; Judgehost instaleren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Domjudge wordt gebruikt voor programmeerwedstrijden, dus het UKP en BAPC. De ESCapade organiseert de wedstrijden, de sysop zorgt ervoor dat domjudge correct draait. Domdjudge heeft een webinterface waar de score van de teams wordt bijgehouden. Ook worden de oplossingen van problemen via de webinterface aan domjudjge doorgegeven. Bij A-Eskwadraat gebruiken we URL http://judge.a-eskwadraat.nl/ voor domjudge. We draaien een judgeserver en judgehost. Deze draaien op [[haskell]], namelijk de VM's ''Judgehost'' en ''Judgeserver''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Judgeserver ==&lt;br /&gt;
De judgeserver verzorgt de front-end, oftewel de webinterface. Deze moet draaien, zodat iedereen bij de webpagina kan en daar dingen kan doen. Inzendingen kunnen ingestuurd worden, maar er moet ook een judgehost draaien om deze na te kunnen kijken.&lt;br /&gt;
&lt;br /&gt;
Op de judgeserver moeten de mysql en apache services draaien.&lt;br /&gt;
&lt;br /&gt;
== Judgehost ==&lt;br /&gt;
Op de judgehost worden inzendingen gestuurd vanaf de judgeserver. De judgehost kijkt deze dan na. Op de judgehost moet dan wel ''judgedeamon'' actief draaien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Judgeserver &amp;amp; Judgehost instaleren==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De makkelijkste manier om een judgeserver &amp;amp; judgehost te maken is door de live image van domjudge te converteren naar qcow2, en vervolgens aan de hypervisor te hangen.&lt;br /&gt;
Het converteren van de image kun je het beste op een zoo doen, omdat de benodigde tools niet op Haskell staan (zorg er wel voor dat deze zoo genoeg storage space heeft voor de images). Download daarom de image op een zoo waarop de &amp;quot;libguestfs-tools&amp;quot; ge&amp;amp;#239;nstalleerd staan of installeer het &amp;quot;libguestfs-tools&amp;quot; package. Voor je de image kunt converteren moet je dan ook nog het &amp;quot;libvirt&amp;quot; package downloaden en in qemu config (/etc/libvirt/qemu.conf) de regels voor &amp;quot;user = &amp;quot;root&amp;quot;&amp;quot; en &amp;quot;group = &amp;quot;root&amp;quot;&amp;quot; uncommenten. Vervolgens start je de &amp;quot;libvirtd&amp;quot; service en kun je verdergaan met onderstaande stappen:&lt;br /&gt;
&lt;br /&gt;
Download de image van:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;[https://www.domjudge.org/live/ https://www.domjudge.org/live/]&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pak deze uit. &lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;bzip2 -d {domjudgeimage.bz2}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
We willen eerst het image vergroten. We maken een nieuwe img file aan van 8GB&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;truncate -s 8G {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
En dan resizen we het orginele file naar een groter file format&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;virt-resize --expand /dev/sda2 {original.img} {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Converteer deze vervolgens naar qcow2 formaat:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img convert {input file} -c -O qcow2 {output file}&amp;lt;/div&amp;gt;&lt;br /&gt;
Voor gemak maak je er dan een snapshot layer omheen, zodat je makkelijk kunt reverten naar de originele image:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img create -o backing_file={output file} -f qcow2 judgeserver.qcow2&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We vervangen nu de qcow image van de oude domdjudge server (of host) door deze nieuwe qcow op haskell. (bij /var/lib/vz/images/{virtual host nummer}). Het virtual host nummer is te zien in de webinterface van haskell. Vervolgens moet de config file van de VM op haskell (/etc/pve/qemu-server/{vm-id}.conf}) nog aangepast worden om naar de juiste image te wijzen. Pas hiervoor de volgende regel zo aan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;scsi0: storage-vm-vz:{vm-id}/{naam van image},cache=writethrough,size={size}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doe hierna een rescan, om de nieuwe image te vinden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qm rescan -vmid {vm-id}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Om de live image te updaten dient de configuratie voor apt aangepast te worden. Hierbij moet de ingestelde proxy uitgezet worden in:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;/etc/apt/apt.conf&amp;lt;/div&amp;gt;[[Category:Escapade]]&lt;br /&gt;
&lt;br /&gt;
De stappen zijn voor de judgeserver en judgehost hetzelfde. Om de judgehost de judgeserver te kunnen laten vinden moet je er nog voor zorgen dat de restapi file (/etc/domjdudge/restapi.secret) overeenkomt met die op de judgeserver en dat in deze file niet naar de localhost maar naar judge.a-eskwadraat.nl verwezen wordt.&lt;br /&gt;
&lt;br /&gt;
Meer info is [https://github.com/DOMjudge/domjudge-packaging/blob/master/live-image/files/README#L64 hier] te vinden.&lt;br /&gt;
&lt;br /&gt;
Het is verder belangrijk dat de judgeserver en judgehost alleen als domserver respectievelijk judgehost booten, dit kun je instellen door in de grub config file (/etc/default/grub) de volgende lijn aan te passen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;GRUB_DEFAULT={nummer}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbij correspondeert het nummer met de boot-entry in het grub boot menu, beginnend bij 0 (deze kun je bereiken door op proxmox vlak na het opstarten van de VM een console naar de VM te openen). Verander dit nummer naar het entry nummer van of de domserver of de judgehost. En update grub daarna met deze nieuwe configuratie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;update-grub&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stappen bij een programeerwedstrijd==&lt;br /&gt;
&lt;br /&gt;
*Zorg voor een nieuwe domjudge installatie of gebruik een oude&lt;br /&gt;
**Als je een oude gebruikt, ruim de oude judgings op, op de judgehost. Ga naar de judgehost en gebruik het &amp;quot;$du / -aS | sort -nr | head -25&amp;quot; commando om te zien waar de grote files zich bevinden. het &amp;quot;$df&amp;quot; commando laat zien hoeveel ruimte je nog hebt&lt;br /&gt;
** In /var/lib/domjudge/judgings bevinden zich de judgings. Deze kunnen verwijderd worden om ruimte vrij te maken op de judgehost&lt;br /&gt;
*Zorg dat de judgehost en de judgeserver allebei aanstaan. (login is standaard)&lt;br /&gt;
*De site werkt nu op judge.a-eskwadraat.nl&lt;br /&gt;
*De ESCapade moet nu de teams en opdrachten in de website instellen&lt;br /&gt;
*Op de wedstrijddag zelf, blijf beschikbaar voor het geval er dingen mis gaan. (Met voorkeur bij A-Eskwadraat zelf, zodat je direct bij de server kan)&lt;br /&gt;
&lt;br /&gt;
==Installeer een verse domjudge==&lt;br /&gt;
Nog te doen&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[https://www.domjudge.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge</id>
		<title>Domjudge</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge"/>
				<updated>2017-10-09T23:17:31Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: /* Judgeserver &amp;amp; Judgehost instaleren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Domjudge wordt gebruikt voor programmeerwedstrijden, dus het UKP en BAPC. De ESCapade organiseert de wedstrijden, de sysop zorgt ervoor dat domjudge correct draait. Domdjudge heeft een webinterface waar de score van de teams wordt bijgehouden. Ook worden de oplossingen van problemen via de webinterface aan domjudjge doorgegeven. Bij A-Eskwadraat gebruiken we URL http://judge.a-eskwadraat.nl/ voor domjudge. We draaien een judgeserver en judgehost. Deze draaien op [[haskell]], namelijk de VM's ''Judgehost'' en ''Judgeserver''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Judgeserver ==&lt;br /&gt;
De judgeserver verzorgt de front-end, oftewel de webinterface. Deze moet draaien, zodat iedereen bij de webpagina kan en daar dingen kan doen. Inzendingen kunnen ingestuurd worden, maar er moet ook een judgehost draaien om deze na te kunnen kijken.&lt;br /&gt;
&lt;br /&gt;
Op de judgeserver moeten de mysql en apache services draaien.&lt;br /&gt;
&lt;br /&gt;
== Judgehost ==&lt;br /&gt;
Op de judgehost worden inzendingen gestuurd vanaf de judgeserver. De judgehost kijkt deze dan na. Op de judgehost moet dan wel ''judgedeamon'' actief draaien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Judgeserver &amp;amp; Judgehost instaleren==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De makkelijkste manier om een judgeserver &amp;amp; judgehost te maken is door de live image van domjudge te converteren naar qcow2, en vervolgens aan de hypervisor te hangen.&lt;br /&gt;
Het converteren van de image kun je het beste op een zoo doen, omdat de benodigde tools niet op Haskell staan (zorg er wel voor dat deze zoo genoeg storage space heeft voor de images). Download daarom de image op een zoo waarop de &amp;quot;libguestfs-tools&amp;quot; ge&amp;amp;#239;nstalleerd staan of installeer het &amp;quot;libguestfs-tools&amp;quot; package. Voor je de image kunt inverteren moet je dan ook nog het &amp;quot;libvirt&amp;quot; package downloaden en in qemu config (/etc/libvirt/qemu.conf) de regels voor &amp;quot;user = &amp;quot;root&amp;quot;&amp;quot; en &amp;quot;group = &amp;quot;root&amp;quot;&amp;quot; uncommenten. Vervolgens start je de &amp;quot;libvirtd&amp;quot; service en kun je verdergaan met onderstaande stappen:&lt;br /&gt;
&lt;br /&gt;
Download de image van:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;[https://www.domjudge.org/live/ https://www.domjudge.org/live/]&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pak deze uit. &lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;bzip2 -d {domjudgeimage.bz2}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
We willen eerst het image vergroten. We maken een nieuwe img file aan van 8GB&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;truncate -s 8G {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
En dan resizen we het orginele file naar een groter file format&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;virt-resize --expand /dev/sda2 {original.img} {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Converteer deze vervolgens naar qcow2 formaat:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img convert {input file} -c -O qcow2 {output file}&amp;lt;/div&amp;gt;&lt;br /&gt;
Voor gemak maak je er dan een snapshot layer omheen, zodat je makkelijk kunt reverten naar de originele image:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img create -o backing_file={output file} -f qcow2 judgeserver.qcow2&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We vervangen nu de qcow image van de oude domdjudge server (of host) door deze nieuwe qcow op haskell. (bij /var/lib/vz/images/{virtual host nummer}). Het virtual host nummer is te zien in de webinterface van haskell. Vervolgens moet de config file van de VM op haskell (/etc/pve/qemu-server/{vm-id}.conf}) nog aangepast worden om naar de juiste image te wijzen. Pas hiervoor de volgende regel zo aan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;scsi0: storage-vm-vz:{vm-id}/{naam van image},cache=writethrough,size={size}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doe hierna een rescan, om de nieuwe image te vinden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qm rescan -vmid {vm-id}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Om de live image te updaten dient de configuratie voor apt aangepast te worden. Hierbij moet de ingestelde proxy uitgezet worden in:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;/etc/apt/apt.conf&amp;lt;/div&amp;gt;[[Category:Escapade]]&lt;br /&gt;
&lt;br /&gt;
De stappen zijn voor de judgeserver en judgehost hetzelfde. Om de judgehost de judgeserver te kunnen laten vinden moet je er nog voor zorgen dat de restapi file (/etc/domjdudge/restapi.secret) overeenkomt met die op de judgeserver en dat in deze file niet naar de localhost maar naar judge.a-eskwadraat.nl verwezen wordt.&lt;br /&gt;
&lt;br /&gt;
Meer info is [https://github.com/DOMjudge/domjudge-packaging/blob/master/live-image/files/README#L64 hier] te vinden.&lt;br /&gt;
&lt;br /&gt;
Het is verder belangrijk dat de judgeserver en judgehost alleen als domserver respectievelijk judgehost booten, dit kun je instellen door in de grub config file (/etc/default/grub) de volgende lijn aan te passen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;GRUB_DEFAULT={nummer}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbij correspondeert het nummer met de boot-entry in het grub boot menu, beginnend bij 0 (deze kun je bereiken door op proxmox vlak na het opstarten van de VM een console naar de VM te openen). Verander dit nummer naar het entry nummer van of de domserver of de judgehost. En update grub daarna met deze nieuwe configuratie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;update-grub&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stappen bij een programeerwedstrijd==&lt;br /&gt;
&lt;br /&gt;
*Zorg voor een nieuwe domjudge installatie of gebruik een oude&lt;br /&gt;
**Als je een oude gebruikt, ruim de oude judgings op, op de judgehost. Ga naar de judgehost en gebruik het &amp;quot;$du / -aS | sort -nr | head -25&amp;quot; commando om te zien waar de grote files zich bevinden. het &amp;quot;$df&amp;quot; commando laat zien hoeveel ruimte je nog hebt&lt;br /&gt;
** In /var/lib/domjudge/judgings bevinden zich de judgings. Deze kunnen verwijderd worden om ruimte vrij te maken op de judgehost&lt;br /&gt;
*Zorg dat de judgehost en de judgeserver allebei aanstaan. (login is standaard)&lt;br /&gt;
*De site werkt nu op judge.a-eskwadraat.nl&lt;br /&gt;
*De ESCapade moet nu de teams en opdrachten in de website instellen&lt;br /&gt;
*Op de wedstrijddag zelf, blijf beschikbaar voor het geval er dingen mis gaan. (Met voorkeur bij A-Eskwadraat zelf, zodat je direct bij de server kan)&lt;br /&gt;
&lt;br /&gt;
==Installeer een verse domjudge==&lt;br /&gt;
Nog te doen&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[https://www.domjudge.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge</id>
		<title>Domjudge</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge"/>
				<updated>2017-10-09T23:14:57Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: /* Judgeserver &amp;amp; Judgehost instaleren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Domjudge wordt gebruikt voor programmeerwedstrijden, dus het UKP en BAPC. De ESCapade organiseert de wedstrijden, de sysop zorgt ervoor dat domjudge correct draait. Domdjudge heeft een webinterface waar de score van de teams wordt bijgehouden. Ook worden de oplossingen van problemen via de webinterface aan domjudjge doorgegeven. Bij A-Eskwadraat gebruiken we URL http://judge.a-eskwadraat.nl/ voor domjudge. We draaien een judgeserver en judgehost. Deze draaien op [[haskell]], namelijk de VM's ''Judgehost'' en ''Judgeserver''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Judgeserver ==&lt;br /&gt;
De judgeserver verzorgt de front-end, oftewel de webinterface. Deze moet draaien, zodat iedereen bij de webpagina kan en daar dingen kan doen. Inzendingen kunnen ingestuurd worden, maar er moet ook een judgehost draaien om deze na te kunnen kijken.&lt;br /&gt;
&lt;br /&gt;
Op de judgeserver moeten de mysql en apache services draaien.&lt;br /&gt;
&lt;br /&gt;
== Judgehost ==&lt;br /&gt;
Op de judgehost worden inzendingen gestuurd vanaf de judgeserver. De judgehost kijkt deze dan na. Op de judgehost moet dan wel ''judgedeamon'' actief draaien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Judgeserver &amp;amp; Judgehost instaleren==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De makkelijkste manier om een judgeserver &amp;amp; judgehost te maken is door de live image van domjudge te converteren naar qcow2, en vervolgens aan de hypervisor te hangen.&lt;br /&gt;
Het converteren van de image kun je het beste op een zoo doen, omdat de benodigde tools niet op Haskell staan (zorg er wel voor dat deze zoo genoeg storage space heeft voor de images). Download daarom de image op een zoo waarop de &amp;quot;libguestfs-tools&amp;quot; ge&amp;amp;#239;nstalleerd staan of installeer het &amp;quot;libguestfs-tools&amp;quot; package. Voor je de image kunt inverteren moet je dan ook nog het &amp;quot;libvirt&amp;quot; package downloaden en in qemu config (/etc/libvirt/qemu.conf) de regels voor &amp;quot;user = &amp;quot;root&amp;quot;&amp;quot; en &amp;quot;group = &amp;quot;root&amp;quot;&amp;quot; uncommenten. Vervolgens start je de &amp;quot;libvirtd&amp;quot; service en kun je verdergaan met onderstaande stappen:&lt;br /&gt;
&lt;br /&gt;
Download de image van:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;[https://www.domjudge.org/live/ https://www.domjudge.org/live/]&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pak deze uit. &lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;bzip2 -d {domjudgeimage.bz2}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
We willen eerst het image vergroten. We maken een nieuwe img file aan van 8GB&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;truncate -s 8G {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
En dan resizen we het orginele file naar een groter file format&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;virt-resize --expand /dev/sda2 {original.img} {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Converteer deze vervolgens naar qcow2 formaat:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img convert {input file} -c -O qcow2 {output file}&amp;lt;/div&amp;gt;&lt;br /&gt;
Voor gemak maak je er dan een snapshot layer omheen, zodat je makkelijk kunt reverten naar de originele image:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img create -o backing_file={output file} -f qcow2 judgeserver.qcow2&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We vervangen nu de qcow image van de oude domdjudge server (of host) door deze nieuwe qcow op haskell. (bij /var/lib/vz/images/{virtual host nummer}). Het virtual host nummer is te zien in de webinterface van haskell. Vervolgens moet de config file van de VM op haskell (/etc/pve/qemu-server/{vm-id}.conf}) nog aangepast worden om naar de juiste image te wijzen. Pas hiervoor de volgende regel zo aan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;scsi0: storage-vm-vz:{vm-id}/{naam van image},cache=writethrough,size={size}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doe hierna een rescan, om de nieuwe image te vinden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qm rescan -vmid {vm-id}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Om de live image te updaten dient de configuratie voor apt aangepast te worden. Hierbij moet de ingestelde proxy uitgezet worden in:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;/etc/apt/apt.conf&amp;lt;/div&amp;gt;[[Category:Escapade]]&lt;br /&gt;
&lt;br /&gt;
De stappen zijn voor de judgeserver en judgehost hetzelfde. Om de judgehost de judgeserver te kunnen laten vinden moet je er nog voor zorgen dat de restapi file (/etc/domjdudge/restapi.secret) overeenkomt met die op de judgeserver en dat in deze file niet naar de localhost maar naar judge.a-eskwadraat.nl verwezen wordt.&lt;br /&gt;
&lt;br /&gt;
Meer info is [https://github.com/DOMjudge/domjudge-packaging/blob/master/live-image/files/README#L64 hier] te vinden.&lt;br /&gt;
&lt;br /&gt;
Het is verder belangrijk dat de judgeserver en judgehost alleen als domserver respectievelijk judgehost booten, dit kun je instellen door in de grub config file (/etc/default/grub) de volgende lijn aan te passen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;GRUB_DEFAULT={nummer}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbij correspondeert het nummer met de boot-entry in het grub boot menu, beginnend bij 0 (deze kun je bereiken door op proxmox vlak na het opstarten van de VM een console naar de VM te openen). Verander dit nummer naar het entry nummer van of de domserver of de judgehost.&lt;br /&gt;
&lt;br /&gt;
==Stappen bij een programeerwedstrijd==&lt;br /&gt;
&lt;br /&gt;
*Zorg voor een nieuwe domjudge installatie of gebruik een oude&lt;br /&gt;
**Als je een oude gebruikt, ruim de oude judgings op, op de judgehost. Ga naar de judgehost en gebruik het &amp;quot;$du / -aS | sort -nr | head -25&amp;quot; commando om te zien waar de grote files zich bevinden. het &amp;quot;$df&amp;quot; commando laat zien hoeveel ruimte je nog hebt&lt;br /&gt;
** In /var/lib/domjudge/judgings bevinden zich de judgings. Deze kunnen verwijderd worden om ruimte vrij te maken op de judgehost&lt;br /&gt;
*Zorg dat de judgehost en de judgeserver allebei aanstaan. (login is standaard)&lt;br /&gt;
*De site werkt nu op judge.a-eskwadraat.nl&lt;br /&gt;
*De ESCapade moet nu de teams en opdrachten in de website instellen&lt;br /&gt;
*Op de wedstrijddag zelf, blijf beschikbaar voor het geval er dingen mis gaan. (Met voorkeur bij A-Eskwadraat zelf, zodat je direct bij de server kan)&lt;br /&gt;
&lt;br /&gt;
==Installeer een verse domjudge==&lt;br /&gt;
Nog te doen&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[https://www.domjudge.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge</id>
		<title>Domjudge</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge"/>
				<updated>2017-10-09T23:02:13Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: /* Judgeserver &amp;amp; Judgehost instaleren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Domjudge wordt gebruikt voor programmeerwedstrijden, dus het UKP en BAPC. De ESCapade organiseert de wedstrijden, de sysop zorgt ervoor dat domjudge correct draait. Domdjudge heeft een webinterface waar de score van de teams wordt bijgehouden. Ook worden de oplossingen van problemen via de webinterface aan domjudjge doorgegeven. Bij A-Eskwadraat gebruiken we URL http://judge.a-eskwadraat.nl/ voor domjudge. We draaien een judgeserver en judgehost. Deze draaien op [[haskell]], namelijk de VM's ''Judgehost'' en ''Judgeserver''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Judgeserver ==&lt;br /&gt;
De judgeserver verzorgt de front-end, oftewel de webinterface. Deze moet draaien, zodat iedereen bij de webpagina kan en daar dingen kan doen. Inzendingen kunnen ingestuurd worden, maar er moet ook een judgehost draaien om deze na te kunnen kijken.&lt;br /&gt;
&lt;br /&gt;
Op de judgeserver moeten de mysql en apache services draaien.&lt;br /&gt;
&lt;br /&gt;
== Judgehost ==&lt;br /&gt;
Op de judgehost worden inzendingen gestuurd vanaf de judgeserver. De judgehost kijkt deze dan na. Op de judgehost moet dan wel ''judgedeamon'' actief draaien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Judgeserver &amp;amp; Judgehost instaleren==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De makkelijkste manier om een judgeserver &amp;amp; judgehost te maken is door de live image van domjudge te converteren naar qcow2, en vervolgens aan de hypervisor te hangen.&lt;br /&gt;
Het converteren van de image kun je het beste op een zoo doen, omdat de benodigde tools niet op Haskell staan (zorg er wel voor dat deze zoo genoeg storage space heeft voor de images). Download daarom de image op een zoo waarop de &amp;quot;libguestfs-tools&amp;quot; ge&amp;amp;#239;nstalleerd staan of installeer het &amp;quot;libguestfs-tools&amp;quot; package. Voor je de image kunt inverteren moet je dan ook nog het &amp;quot;libvirt&amp;quot; package downloaden en in qemu config (/etc/libvirt/qemu.conf) de regels voor &amp;quot;user = &amp;quot;root&amp;quot;&amp;quot; en &amp;quot;group = &amp;quot;root&amp;quot;&amp;quot; uncommenten. Vervolgens start je de &amp;quot;libvirtd&amp;quot; service en kun je verdergaan met onderstaande stappen:&lt;br /&gt;
&lt;br /&gt;
Download de image van:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;[https://www.domjudge.org/live/ https://www.domjudge.org/live/]&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pak deze uit. &lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;bzip2 -d {domjudgeimage.bz2}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
We willen eerst het image vergroten. We maken een nieuwe img file aan van 8GB&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;truncate -s 8G {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
En dan resizen we het orginele file naar een groter file format&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;virt-resize --expand /dev/sda2 {original.img} {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Converteer deze vervolgens naar qcow2 formaat:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img convert {input file} -c -O qcow2 {output file}&amp;lt;/div&amp;gt;&lt;br /&gt;
Voor gemak maak je er dan een snapshot layer omheen, zodat je makkelijk kunt reverten naar de originele image:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img create -o backing_file={output file} -f qcow2 judgeserver.qcow2&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We vervangen nu de qcow image van de oude domdjudge server (of host) door deze nieuwe qcow op haskell. (bij /var/lib/vz/images/{virtual host nummer}). Het virtual host nummer is te zien in de webinterface van haskell. Vervolgens moet de config file van de VM op haskell (/etc/pve/qemu-server/{vm-id}.conf}) nog aangepast worden om naar de juiste image te wijzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;scsi0: storage-vm-vz:{vm-id}/{naam van image},cache=writethrough,size={size}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doe hierna een rescan, om de nieuwe image te vinden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qm rescan -vmid {vm-id}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Om de live image te updaten dient de configuratie voor apt aangepast te worden. Hierbij moet de ingestelde proxy uitgezet worden in:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;/etc/apt/apt.conf&amp;lt;/div&amp;gt;[[Category:Escapade]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meer info is [https://github.com/DOMjudge/domjudge-packaging/blob/master/live-image/files/README#L64 hier] te vinden.&lt;br /&gt;
&lt;br /&gt;
==Stappen bij een programeerwedstrijd==&lt;br /&gt;
&lt;br /&gt;
*Zorg voor een nieuwe domjudge installatie of gebruik een oude&lt;br /&gt;
**Als je een oude gebruikt, ruim de oude judgings op, op de judgehost. Ga naar de judgehost en gebruik het &amp;quot;$du / -aS | sort -nr | head -25&amp;quot; commando om te zien waar de grote files zich bevinden. het &amp;quot;$df&amp;quot; commando laat zien hoeveel ruimte je nog hebt&lt;br /&gt;
** In /var/lib/domjudge/judgings bevinden zich de judgings. Deze kunnen verwijderd worden om ruimte vrij te maken op de judgehost&lt;br /&gt;
*Zorg dat de judgehost en de judgeserver allebei aanstaan. (login is standaard)&lt;br /&gt;
*De site werkt nu op judge.a-eskwadraat.nl&lt;br /&gt;
*De ESCapade moet nu de teams en opdrachten in de website instellen&lt;br /&gt;
*Op de wedstrijddag zelf, blijf beschikbaar voor het geval er dingen mis gaan. (Met voorkeur bij A-Eskwadraat zelf, zodat je direct bij de server kan)&lt;br /&gt;
&lt;br /&gt;
==Installeer een verse domjudge==&lt;br /&gt;
Nog te doen&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[https://www.domjudge.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge</id>
		<title>Domjudge</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge"/>
				<updated>2017-10-09T23:00:39Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: /* Judgeserver &amp;amp; Judgehost instaleren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Domjudge wordt gebruikt voor programmeerwedstrijden, dus het UKP en BAPC. De ESCapade organiseert de wedstrijden, de sysop zorgt ervoor dat domjudge correct draait. Domdjudge heeft een webinterface waar de score van de teams wordt bijgehouden. Ook worden de oplossingen van problemen via de webinterface aan domjudjge doorgegeven. Bij A-Eskwadraat gebruiken we URL http://judge.a-eskwadraat.nl/ voor domjudge. We draaien een judgeserver en judgehost. Deze draaien op [[haskell]], namelijk de VM's ''Judgehost'' en ''Judgeserver''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Judgeserver ==&lt;br /&gt;
De judgeserver verzorgt de front-end, oftewel de webinterface. Deze moet draaien, zodat iedereen bij de webpagina kan en daar dingen kan doen. Inzendingen kunnen ingestuurd worden, maar er moet ook een judgehost draaien om deze na te kunnen kijken.&lt;br /&gt;
&lt;br /&gt;
Op de judgeserver moeten de mysql en apache services draaien.&lt;br /&gt;
&lt;br /&gt;
== Judgehost ==&lt;br /&gt;
Op de judgehost worden inzendingen gestuurd vanaf de judgeserver. De judgehost kijkt deze dan na. Op de judgehost moet dan wel ''judgedeamon'' actief draaien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Judgeserver &amp;amp; Judgehost instaleren==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De makkelijkste manier om een judgeserver &amp;amp; judgehost te maken is door de live image van domjudge te converteren naar qcow2, en vervolgens aan de hypervisor te hangen.&lt;br /&gt;
Het converteren van de image kun je het beste op een zoo doen, omdat de benodigde tools niet op Haskell staan (zorg er wel voor dat deze zoo genoeg storage space heeft voor de images). Download daarom de image op een zoo waarop de &amp;quot;libguestfs-tools&amp;quot; ge&amp;amp;#239;nstalleerd staan of installeer het &amp;quot;libguestfs-tools&amp;quot; package. Voor je de image kunt inverteren moet je dan ook nog het &amp;quot;libvirt&amp;quot; package downloaden en in qemu config (/etc/libvirt/qemu.conf) de regels voor &amp;quot;user = &amp;quot;root&amp;quot;&amp;quot; en &amp;quot;group = &amp;quot;root&amp;quot;&amp;quot; uncommenten. Vervolgens start je de &amp;quot;libvirtd&amp;quot; service en kun je verdergaan met onderstaande stappen:&lt;br /&gt;
&lt;br /&gt;
Download de image van:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;[https://www.domjudge.org/live/ https://www.domjudge.org/live/]&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pak deze uit. &lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;bzip2 -d {domjudgeimage.bz2}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
We willen eerst het image vergroten. We maken een nieuwe img file aan van 8GB&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;truncate -s 8G {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
En dan resizen we het orginele file naar een groter file format&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;virt-resize --expand /dev/sda2 {original.img} {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Converteer deze vervolgens naar qcow2 formaat:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img convert {input file} -c -O qcow2 {output file}&amp;lt;/div&amp;gt;&lt;br /&gt;
Voor gemak maak je er dan een snapshot layer omheen, zodat je makkelijk kunt reverten naar de originele image:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img create -o backing_file={output file} -f qcow2 judgeserver.qcow2&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We vervangen nu de qcow image van de oude domdjudge server (of host) door deze nieuwe qcow op haskell. (bij /var/lib/vz/images/{virtual host nummer}). Het virtual host nummer is te zien in de webinterface van haskell. Vervolgens moet de config file van de VM op haskell (/etc/pve/qemu-server/{vm-id}.conf}) nog aangepast worden om naar de juiste image te wijzen (pas deze regel aan: scsi0: storage-vm-vz:{vm-id}/{naam van image},cache=writethrough,size={size}).&lt;br /&gt;
&lt;br /&gt;
Doe hierna een rescan, om de nieuwe image te vinden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qm rescan -vmid {vm-id}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Om de live image te updaten dient de configuratie voor apt aangepast te worden. Hierbij moet de ingestelde proxy uitgezet worden in:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;/etc/apt/apt.conf&amp;lt;/div&amp;gt;[[Category:Escapade]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meer info is [https://github.com/DOMjudge/domjudge-packaging/blob/master/live-image/files/README#L64 hier] te vinden.&lt;br /&gt;
&lt;br /&gt;
==Stappen bij een programeerwedstrijd==&lt;br /&gt;
&lt;br /&gt;
*Zorg voor een nieuwe domjudge installatie of gebruik een oude&lt;br /&gt;
**Als je een oude gebruikt, ruim de oude judgings op, op de judgehost. Ga naar de judgehost en gebruik het &amp;quot;$du / -aS | sort -nr | head -25&amp;quot; commando om te zien waar de grote files zich bevinden. het &amp;quot;$df&amp;quot; commando laat zien hoeveel ruimte je nog hebt&lt;br /&gt;
** In /var/lib/domjudge/judgings bevinden zich de judgings. Deze kunnen verwijderd worden om ruimte vrij te maken op de judgehost&lt;br /&gt;
*Zorg dat de judgehost en de judgeserver allebei aanstaan. (login is standaard)&lt;br /&gt;
*De site werkt nu op judge.a-eskwadraat.nl&lt;br /&gt;
*De ESCapade moet nu de teams en opdrachten in de website instellen&lt;br /&gt;
*Op de wedstrijddag zelf, blijf beschikbaar voor het geval er dingen mis gaan. (Met voorkeur bij A-Eskwadraat zelf, zodat je direct bij de server kan)&lt;br /&gt;
&lt;br /&gt;
==Installeer een verse domjudge==&lt;br /&gt;
Nog te doen&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[https://www.domjudge.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge</id>
		<title>Domjudge</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge"/>
				<updated>2017-10-09T22:54:23Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: /* Stappen bij een programeerwedstrijd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Domjudge wordt gebruikt voor programmeerwedstrijden, dus het UKP en BAPC. De ESCapade organiseert de wedstrijden, de sysop zorgt ervoor dat domjudge correct draait. Domdjudge heeft een webinterface waar de score van de teams wordt bijgehouden. Ook worden de oplossingen van problemen via de webinterface aan domjudjge doorgegeven. Bij A-Eskwadraat gebruiken we URL http://judge.a-eskwadraat.nl/ voor domjudge. We draaien een judgeserver en judgehost. Deze draaien op [[haskell]], namelijk de VM's ''Judgehost'' en ''Judgeserver''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Judgeserver ==&lt;br /&gt;
De judgeserver verzorgt de front-end, oftewel de webinterface. Deze moet draaien, zodat iedereen bij de webpagina kan en daar dingen kan doen. Inzendingen kunnen ingestuurd worden, maar er moet ook een judgehost draaien om deze na te kunnen kijken.&lt;br /&gt;
&lt;br /&gt;
Op de judgeserver moeten de mysql en apache services draaien.&lt;br /&gt;
&lt;br /&gt;
== Judgehost ==&lt;br /&gt;
Op de judgehost worden inzendingen gestuurd vanaf de judgeserver. De judgehost kijkt deze dan na. Op de judgehost moet dan wel ''judgedeamon'' actief draaien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Judgeserver &amp;amp; Judgehost instaleren==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De makkelijkste manier om een judgeserver &amp;amp; judgehost te maken is door de live image van domjudge te converteren naar qcow2, en vervolgens aan de hypervisor te hangen.&lt;br /&gt;
Het converteren van de image kun je het beste op een zoo doen, omdat de benodigde tools niet op Haskell staan. Download daarom de image op een zoo waarop de &amp;quot;libguestfs-tools&amp;quot; ge&amp;amp;#239;nstalleerd staan of installeer het &amp;quot;libguestfs-tools&amp;quot; package. Voor je de image kunt inverteren moet je dan ook nog het &amp;quot;libvirt&amp;quot; package downloaden en in qemu config (/etc/libvirt/qemu.conf) de regels voor &amp;quot;user = &amp;quot;root&amp;quot;&amp;quot; en &amp;quot;group = &amp;quot;root&amp;quot;&amp;quot; uncommenten. Vervolgens start je de &amp;quot;libvirtd&amp;quot; service en kun je verdergaan met onderstaande stappen:&lt;br /&gt;
&lt;br /&gt;
Download de image van:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;[https://www.domjudge.org/live/ https://www.domjudge.org/live/]&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pak deze uit. &lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;bzip2 -d {domjudgeimage.bz2}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
We willen eerst het image vergroten. We maken een nieuwe img file aan van 8GB&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;truncate -s 8G {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
En dan resizen we het orginele file naar een groter file format&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;virt-resize --expand /dev/sda2 {original.img} {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Converteer deze vervolgens naar qcow2 formaat:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img convert {input file} -c -O qcow2 {output file}&amp;lt;/div&amp;gt;&lt;br /&gt;
Voor gemak maak je er dan een snapshot layer omheen, zodat je makkelijk kunt reverten naar de originele image:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img create -o backing_file={output file} -f qcow2 judgeserver.qcow2&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We vervangen nu de qcow image van de oude domdjudge server (of host) door deze nieuwe qcow op haskell. (bij /var/lib/vz/images/{virtual host nummer}). Het virtual host nummer is te zien in de webinterface van haskell.&lt;br /&gt;
&lt;br /&gt;
Doe hierna een rescan, om de nieuwe image te vinden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qm rescan -vmid {vm-id}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Om de live image te updaten dient de configuratie voor apt aangepast te worden. Hierbij moet de ingestelde proxy uitgezet worden in:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;/etc/apt/apt.conf&amp;lt;/div&amp;gt;[[Category:Escapade]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meer info is [https://github.com/DOMjudge/domjudge-packaging/blob/master/live-image/files/README#L64 hier] te vinden.&lt;br /&gt;
&lt;br /&gt;
==Stappen bij een programeerwedstrijd==&lt;br /&gt;
&lt;br /&gt;
*Zorg voor een nieuwe domjudge installatie of gebruik een oude&lt;br /&gt;
**Als je een oude gebruikt, ruim de oude judgings op, op de judgehost. Ga naar de judgehost en gebruik het &amp;quot;$du / -aS | sort -nr | head -25&amp;quot; commando om te zien waar de grote files zich bevinden. het &amp;quot;$df&amp;quot; commando laat zien hoeveel ruimte je nog hebt&lt;br /&gt;
** In /var/lib/domjudge/judgings bevinden zich de judgings. Deze kunnen verwijderd worden om ruimte vrij te maken op de judgehost&lt;br /&gt;
*Zorg dat de judgehost en de judgeserver allebei aanstaan. (login is standaard)&lt;br /&gt;
*De site werkt nu op judge.a-eskwadraat.nl&lt;br /&gt;
*De ESCapade moet nu de teams en opdrachten in de website instellen&lt;br /&gt;
*Op de wedstrijddag zelf, blijf beschikbaar voor het geval er dingen mis gaan. (Met voorkeur bij A-Eskwadraat zelf, zodat je direct bij de server kan)&lt;br /&gt;
&lt;br /&gt;
==Installeer een verse domjudge==&lt;br /&gt;
Nog te doen&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[https://www.domjudge.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge</id>
		<title>Domjudge</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Domjudge"/>
				<updated>2017-09-25T19:44:09Z</updated>
		
		<summary type="html">&lt;p&gt;Arnold: /* Judgeserver &amp;amp; Judgehost instaleren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Domjudge wordt gebruikt voor programmeerwedstrijden, dus het UKP en BAPC. De ESCapade organiseert de wedstrijden, de sysop zorgt ervoor dat domjudge correct draait. Domdjudge heeft een webinterface waar de score van de teams wordt bijgehouden. Ook worden de oplossingen van problemen via de webinterface aan domjudjge doorgegeven. Bij A-Eskwadraat gebruiken we URL http://judge.a-eskwadraat.nl/ voor domjudge. We draaien een judgeserver en judgehost. Deze draaien op [[haskell]], namelijk de VM's ''Judgehost'' en ''Judgeserver''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Judgeserver ==&lt;br /&gt;
De judgeserver verzorgt de front-end, oftewel de webinterface. Deze moet draaien, zodat iedereen bij de webpagina kan en daar dingen kan doen. Inzendingen kunnen ingestuurd worden, maar er moet ook een judgehost draaien om deze na te kunnen kijken.&lt;br /&gt;
&lt;br /&gt;
Op de judgeserver moeten de mysql en apache services draaien.&lt;br /&gt;
&lt;br /&gt;
== Judgehost ==&lt;br /&gt;
Op de judgehost worden inzendingen gestuurd vanaf de judgeserver. De judgehost kijkt deze dan na. Op de judgehost moet dan wel ''judgedeamon'' actief draaien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Judgeserver &amp;amp; Judgehost instaleren==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De makkelijkste manier om een judgeserver &amp;amp; judgehost te maken is door de live image van domjudge te converteren naar qcow2, en vervolgens aan de hypervisor te hangen.&lt;br /&gt;
Het converteren van de image kun je het beste op een zoo doen, omdat de benodigde tools niet op Haskell staan. Download daarom de image op een zoo waarop de &amp;quot;libguestfs-tools&amp;quot; ge&amp;amp;#239;nstalleerd staan of installeer het &amp;quot;libguestfs-tools&amp;quot; package. Voor je de image kunt inverteren moet je dan ook nog het &amp;quot;libvirt&amp;quot; package downloaden en in qemu config (/etc/libvirt/qemu.conf) de regels voor &amp;quot;user = &amp;quot;root&amp;quot;&amp;quot; en &amp;quot;group = &amp;quot;root&amp;quot;&amp;quot; uncommenten. Vervolgens start je de &amp;quot;libvirtd&amp;quot; service en kun je verdergaan met onderstaande stappen:&lt;br /&gt;
&lt;br /&gt;
Download de image van:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;[https://www.domjudge.org/live/ https://www.domjudge.org/live/]&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pak deze uit. &lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;bzip2 -d {domjudgeimage.bz2}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
We willen eerst het image vergroten. We maken een nieuwe img file aan van 8GB&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;truncate -s 8G {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
En dan resizen we het orginele file naar een groter file format&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;virt-resize --expand /dev/sda2 {original.img} {resized.img}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Converteer deze vervolgens naar qcow2 formaat:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img convert {input file} -c -O qcow2 {output file}&amp;lt;/div&amp;gt;&lt;br /&gt;
Voor gemak maak je er dan een snapshot layer omheen, zodat je makkelijk kunt reverten naar de originele image:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qemu-img create -o backing_file={output file} -f qcow2 judgeserver.qcow2&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We vervangen nu de qcow image van de oude domdjudge server (of host) door deze nieuwe qcow op haskell. (bij /var/lib/vz/images/{virtual host nummer}). Het virtual host nummer is te zien in de webinterface van haskell.&lt;br /&gt;
&lt;br /&gt;
Doe hierna een rescan, om de nieuwe image te vinden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;qm rescan -vmid {vm-id}&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Om de live image te updaten dient de configuratie voor apt aangepast te worden. Hierbij moet de ingestelde proxy uitgezet worden in:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;/etc/apt/apt.conf&amp;lt;/div&amp;gt;[[Category:Escapade]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meer info is [https://github.com/DOMjudge/domjudge-packaging/blob/master/live-image/files/README#L64 hier] te vinden.&lt;br /&gt;
&lt;br /&gt;
==Stappen bij een programeerwedstrijd==&lt;br /&gt;
&lt;br /&gt;
*Zorg voor een nieuwe domjudge installatie of gebruik een oude&lt;br /&gt;
**Als je een oude gebruikt, ruim de oude judgings op, op de judgehost. Ga naar de judgehost en gebruik het &amp;quot;$du / -aS | sort -nr | head -25&amp;quot; commando om te zien waar de grote files zich bevinden. het &amp;quot;$df&amp;quot; commando laat zien hoeveel ruimte je nog hebt&lt;br /&gt;
** In /var/lib/domjudge/judgings bevinden zich de judgings. Deze kunnen verwijderd worden om ruimte vrij te maken op de judgehost&lt;br /&gt;
*Zorg dat de judgehost en de judgeserver allebei aanstaan. (login is standaard)&lt;br /&gt;
*Op de judgehost, start de judgedeamon met $judgedeamon&lt;br /&gt;
*De site werkt nu op judge.a-eskwadraat.nl&lt;br /&gt;
*De ESCapade moet nu de teams en opdrachten in de website instellen&lt;br /&gt;
*Op de wedstrijddag zelf, blijf beschikbaar voor het geval er dingen mis gaan. (Met voorkeur bij A-Eskwadraat zelf, zodat je direct bij de server kan)&lt;br /&gt;
&lt;br /&gt;
==Installeer een verse domjudge==&lt;br /&gt;
Nog te doen&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[https://www.domjudge.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Arnold</name></author>	</entry>

	</feed>