Préparation d’un nouveau projet
Jusqu’ici la configuration concernait le système serveur en lui-même. Maintenant il s’agit d’ajouter un projet de travail. La manipulation concerne chaque nouveau projet.
Si ce n’est déjà fait, ouvrir une session root et définir, en plus de celles déjà présentes, les variables complémentaires qui seront utilisées :
nano /etc/var_tmp.txt
# nom court du projet (répertoire projet) SITE_NAME=site1 # domaine du projet (répertoire messagerie) SITE_DOMAIN=site1.example.com # utilisateur du projet et première adresse e-mail créée SITE_USER=contact # adresse IP du projet SITE_IP=111.222.333.444
. /etc/var_tmp.txt
Création des répertoires du projet
mkdir -p -m 775 /home/web/$SITE_NAME/{/,cgi-bin,doc,doc/archives,doc/project,log,log/apache,log/php,stats,stats/awstats,stats/awstats/data,stats/awstats/report,web,web/web}
touch /home/web/$SITE_NAME/web/web/favicon.ico
chown www-data:www-data -R /home/web/$SITE_NAME
chown user:www-data -R /home/web/$SITE_NAME/web
chmod 775 -R /home/web/$SITE_NAME/web
chown root:root /home/web/$SITE_NAME/log/apache
chown www-data:www-data /home/web/$SITE_NAME/log/php
Ajout du nouveau domaine à Postfix
echo $SITE_DOMAIN >> /etc/postfix/vdomains
echo autoreply.$SITE_DOMAIN >> /etc/postfix/vdomains
echo autoreply.$SITE_DOMAIN autoreply: >> /etc/postfix/transport
postmap /etc/postfix/transport
echo "transport_$SITE_NAME unix - - n - - smtp
-o smtp_helo_name=mail.$SITE_DOMAIN
-o smtp_bind_address=$SITE_IP" >> /etc/postfix/master.cf
echo "@$SITE_DOMAIN transport_$SITE_NAME:" >> /etc/postfix/sender_transport
postmap /etc/postfix/sender_transport
Création des adresses e-mail nécessaires par défaut
Elles transfereront les e-mails reçus vers le compte utilisateur par exemple.
echo "abuse@$SITE_DOMAIN $SITE_USER@$SITE_DOMAIN
postmaster@$SITE_DOMAIN $SITE_USER@$SITE_DOMAIN" >> /etc/postfix/valias
postmap /etc/postfix/valias
Signature DKIM pour les e-mails du domaine
mkdir /etc/opendkim/keys/$SITE_DOMAIN
opendkim-genkey -s mail -d $SITE_DOMAIN -D /etc/opendkim/keys/$SITE_DOMAIN
chown opendkim:opendkim -R /etc/opendkim
echo "mail._domainkey.$SITE_DOMAIN $SITE_DOMAIN:mail:/etc/opendkim/keys/$SITE_DOMAIN/mail.private" >> /etc/opendkim/KeyTable
echo "*@$SITE_DOMAIN mail._domainkey.$SITE_DOMAIN" >> /etc/opendkim/SigningTable
cat /etc/opendkim/keys/$SITE_DOMAIN/mail.txt
Copier la clé publique vers la configuration DNS.
Création du premier utilisateur et de son e-mail
mkdir /home/mail/$SITE_DOMAIN
mkdir -p /home/mail/$SITE_DOMAIN/user/$SITE_USER
chown virtual:virtual -R /home/mail/$SITE_DOMAIN/user/$SITE_USER/
echo $SITE_USER@$SITE_DOMAIN $SITE_DOMAIN/user/$SITE_USER/mail/ >> /etc/postfix/vmaps
postmap /etc/postfix/vmaps
service postfix reload
echo $SITE_USER@$SITE_DOMAIN::1001:1001::/home/mail/$SITE_DOMAIN/user/$SITE_USER/mail >> /etc/virtual/passwd
SITE_PASS=$(doveadm pw -s CRAM-MD5)
Choisir un passe et insérer la chaîne générée dans le fichier des utilisateurs virtuels.
echo $SITE_USER@$SITE_DOMAIN:$SITE_PASS >> /etc/virtual/shadow
service dovecot reload
Contrôles de la messagerie
L’idéal étant d’effectuer ces tests à partir d’une machine autre que le serveur.
Envoyez un e-mail vers l’adresse nouvellement créée sur le serveur, à partir d’une autre plate-forme de messagerie.
SITE_DOMAIN=dev.site1.example.com
Test connexion SMTP
telnet mail.$SITE_DOMAIN 25
ehlo localhost
Doit faire apparaître une liste contenant :
250-STARTTLS
250-AUTH PLAIN LOGIN CRAM-MD5
quit
telnet mail.$SITE_DOMAIN 587
ehlo localhost
Doit faire apparaître une liste contenant :
250-STARTTLS
250-AUTH PLAIN LOGIN CRAM-MD5
quit
Test connexion POP
telnet mail.$SITE_DOMAIN 110
user contact@dev.site1.example.com
+OK
pass passe
+OK Logged in
quit
Test connexion IMAP
telnet mail.$SITE_DOMAIN 143
+OK Dovecot ready.
- login contact@dev.site1.example.com passe
(le tiret en début de commande est requis)
OK Logged in.
- select inbox
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 1 EXISTS
* 1 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1234567890] UIDs valid
* OK [UIDNEXT 2] Predicted next UID
– OK [READ-WRITE] Select completed.
L’indication « 1 EXISTS » signifie que le message est bien en attente sur le serveur.
- logout
Test connexion POPS
openssl s_client -connect mail.$SITE_DOMAIN:995
+OK Dovecot ready.
user contact@dev.site1.example.com
+OK
pass passe
+OK Logged in
quit
Test connexion IMAPS
openssl s_client -connect mail.$SITE_DOMAIN:993
+OK Dovecot ready.
- login contact@dev.site1.example.com passe
OK Logged in.
- select inbox
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 1 EXISTS
* 0 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1234567890] UIDs valid
* OK [UIDNEXT 2] Predicted next UID
– OK [READ-WRITE] Select completed.
- logout
Quitter cette console de test.
Test signature DKIM
Envoyer un e-mail à check-auth2@verifier.port25.com et attendre la réponse contenant le rapport généré automatiquement.
Création de l’hôte virtuel Apache
Si besoin, adapter manuellement la configuration suivante (sous-domaine autre que « www », paramétrages complémentaires).
echo "<VirtualHost $SITE_IP:80>
ServerName $SITE_DOMAIN
ServerAlias www.$SITE_DOMAIN
DocumentRoot /home/web/$SITE_NAME/web/web
## Logs
CustomLog /home/web/$SITE_NAME/log/apache/access.log combined env="\!"no_log
ErrorLog /home/web/$SITE_NAME/log/apache/error.log
## / Logs
RewriteEngine on
## Redirection vers www
RewriteCond %{HTTP_HOST} ^$SITE_DOMAIN$
RewriteRule ^(.*) http://www.$SITE_DOMAIN$1 [QSA,L,R=301]
## / Redirection vers www
</VirtualHost>" > /etc/apache2/sites-available/www.$SITE_DOMAIN.conf
a2ensite www.$SITE_DOMAIN.conf
Statistiques
Ajouter une configuration à partir du modèle original :
cp /etc/awstats/awstats.conf.original /etc/awstats/awstats.stats.$SITE_DOMAIN.conf
sed -i 's:^LogFile="/var/log/apache2/access.log":LogFile="/home/web/'"$SITE_NAME"'/log/apache/access.log":' /etc/awstats/awstats.stats.$SITE_DOMAIN.conf
sed -i 's/^LogFormat=4/LogFormat=1/' /etc/awstats/awstats.stats.$SITE_DOMAIN.conf
sed -i 's/^SiteDomain=""/SiteDomain="'"$SITE_DOMAIN"'"/' /etc/awstats/awstats.stats.$SITE_DOMAIN.conf
sed -i 's:^DirData="/var/lib/awstats":DirData="/home/web/'"$SITE_NAME"'/stats/awstats/data":' /etc/awstats/awstats.stats.$SITE_DOMAIN.conf
sed -i 's/^SkipFiles=""/SkipFiles="REGEX[^\\\/awstats] REGEX[^\\\/mrtg]"/' /etc/awstats/awstats.stats.$SITE_DOMAIN.conf
Ajouter l’hôte virtuel donnant accès aux statistiques :
echo "<VirtualHost $SITE_IP:80>
ServerName stats.$SITE_DOMAIN
DocumentRoot /home/web/$SITE_NAME/web/web
RewriteEngine on
Include /etc/apache2/common-conf/awstats
Include /etc/apache2/common-conf/awstats-security
</VirtualHost>" > /etc/apache2/sites-available/stats.$SITE_DOMAIN.conf
Valider la prise en compte de ces nouveaux hôtes sur Apache :
a2ensite stats.$SITE_DOMAIN.conf
apache2ctl graceful