Axiso

Notes

Installation d’un serveur d’hébergement Linux – Debian

Serveur — janvier 2016

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 :

vi /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