PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Journal du hacker : Liens intéressants Journal du hacker semaine #41

lundi 14 octobre 2019 à 00:01

Pour la 41ème semaine de l'année 2019, voici 14 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

citizenz7 : Un serveur de mail complet et moderne

mercredi 9 octobre 2019 à 18:38
Système de base : Ubuntu server 18.04

Hébergeur : Hetzner VPS CX11 (1 vCPU - 2 GB RAM - 20 GB SSD - 2.99 €/mois)

Composants du serveur de mail :

0 - Changez le mot de passe root, créez un user système avec accès sudo. Passez en root.

1 - On met à jour
# apt-get update && apt-get upgrade

2 - On vérifie que sendmail n'est pas installé par défaut :
# service sendmail stop; update-rc.d -f sendmail remove

Si vous recevez l'erreur suivante ignorez-là : "Failed to stop sendmail.service: Unit sendmail.service not loaded"
Ca signifie que tout est bon :)

3 - On crée un groupe et un user vmail :
# groupadd -g 5000 vmail
# useradd -u 5000 -g vmail -s /usr/sbin/nologin -d /var/mail/vmail -m vmail

4- On installe quelques appli utiles + nginx, php, mysql (Mariadb) :
# apt install mc screen htop vim-nox curl git unzip ntp ntpdate nginx mariadb-server openssl php7.2-fpm php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap php7.2-cli php7.2-cgi php-pear mcrypt imagemagick libruby php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl memcached php-memcache php-imagick php-gettext php7.2-zip php7.2-mbstring

####### MYSQL #######
5 - On sécurise Mysql en ajoutant un mot de passe root :
# mysql_secure_installation
    Enter current password for root (enter for none): ENTREE
    Set root password? [Y/n] Tapez Y
    New password: Entrez le mot de passe pour le user root
    Re-enter new password: mot de passe de nouveau...
    Remove anonymous users? [Y/n] Tapez Y
    Disallow root login remotely? [Y/n] Tapez Y
    Remove test database and access to it? [Y/n] Tapez Y
    Reload privilege tables now? [Y/n] Tapez Y

####### POSTFIXADMIN #######
6 - On télécharge Postfixadmin (la dernière version au 09/10/19 est la 3.2) :
# wget https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.2/postfixadmin-3.2.tar.gz
# tar xzf postfixadmin-3.2.tar.gz

7 - On déplace postfixadmin en /var/www/postfixadmin et on crée le répertoire templates_c :
# mv postfixadmin-3.2/ /var/www/postfixadmin
# rm -f postfixadmin-3.2.tar.gz
# mkdir /var/www/postfixadmin/templates_c

8 - On change les droits :
# chown -R www-data: /var/www/postfixadmin

[* : A partir de maintenant, vous penserez à remplacer your_secret_password" par votre VRAI mot de passe dans tous les fichiers d'exemple !]

9 - On crée la base mysql pour postfixadmin :
# mysql -u root -p

CREATE DATABASE postfixadmin;
GRANT ALL ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'your_secret_password';
FLUSH PRIVILEGES;
exit


10 - On crée /var/www/postfixadmin/config.local.php :
$CONF['configured'] = true;

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'your_secret_password';
$CONF['database_name'] = 'postfixadmin';

$CONF['default_aliases'] = array (
  'abuse'      => 'abuse@example.com',
  'hostmaster' => 'hostmaster@example.com',
  'postmaster' => 'postmaster@example.com',
  'webmaster'  => 'webmaster@example.com'
);

$CONF['fetchmail'] = 'NO';
$CONF['show_footer_text'] = 'NO';

$CONF['quota'] = 'YES';
$CONF['domain_quota'] = 'YES';
$CONF['quota_multiplier'] = '1024000';
$CONF['used_quotas'] = 'YES';
$CONF['new_quota_table'] = 'YES';

$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';
$CONF['maxquota'] = '0';
$CONF['domain_quota_default'] = '0';

?>


11 - On installe le schéma de la base en lançant le script suivant :
sudo -u www-data php /var/www/postfixadmin/public/upgrade.php

12 - Puis on crée le superadmin Postfixadmin :
sudo bash /var/www/postfixadmin/scripts/postfixadmin-cli admin add

[* Veillez à changer your_secret_password et example.com !]

Welcome to Postfixadmin-CLI v0.2
---------------------------------------------------------------

Admin:  
> postmaster@example.com

Password:  
> your_secret_password

Password (again):  
> your_secret_password

Super admin:
(Super admins have access to all domains, can manage domains and admin accounts.) (y/n)
> y

Domain:  
> example.com

Active: (y/n)
> y

The admin postmaster@example.com has been added!

13 - On installe Letsencrypt (certbot) :
# apt install software-properties-common lsb-release
# add-apt-repository ppa:certbot/certbot
# apt update
# apt install python-certbot-nginx


14 - On crée le fichier Nginx dans /etc/nginx/conf.d/mail.example.com.conf
server {   
   listen 80;   
   listen [::]:80;   
   server_name mail.example.com;   
   root /var/www/postfixadmin/public;   
   index index.php;   
   location / {      
      try_files $uri $uri/ /index.php;   
   }   
   location ~* \\.php$ {        
      fastcgi_split_path_info ^(.+?\\.php)(/.*)$;        
      if (!-f $document_root$fastcgi_script_name) {return 404;}        
      fastcgi_pass  unix:/run/php/php7.2-fpm.sock;        
      fastcgi_index index.php;        
      include fastcgi_params;        
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   
   }
}

15 - On va créer le certificat Letsencrypt et laisser certbot configurer le fichier Nginx pour nous :
# certbot --nginx -d mail.example.com

On renseigne premièrement l'adresse e-mail à laquelle les alerte de renouvellement de certificat seront envoyées.
Puis on accepte les "Termes du service" : A
Je réponds ensuite NON (n) pour partager mon adresse e-mail.
Enfin, je choisis la réponse 2 (Redirect) afin que toutes les requêtes soient redirigées en HTTPS automatiquement.

16 - Ouvrez votre fichier /etc/nginx/conf.d/mail.example.com.conf et ajoutez http2 comme ceci :
../..
    listen [::]:443 ssl http2; # managed by Certbot
    listen 443 ssl http2; # managed by Certbot
../..


... et on redémarre Nginx : service nginx restart


####### POSTFIX #######
17 - Les paquets Dovecot chez Ubuntu ne sont pas à jour. ON va donc installer Dovecot depuis le répertoire Dovecot Community afin de tirer avantages, notamment, du module imap_sieve :
# wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -
# echo "deb https://repo.dovecot.org/ce-2.3-latest/ubuntu/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/dovecot.list
# apt update
# debconf-set-selections <<< "postfix postfix/mailname string $(hostname -f)"
# debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
# apt install postfix postfix-mysql dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-mysql

18 - Configuration de Postfix
# mkdir -p /etc/postfix/sql

[* : vous veillerez à changer P4ssvv0rD par votre VRAI mot de passe]

# nano /etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'

# nano /etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

# nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

# nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query  = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

# nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

# nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'

Puis on complète la configuration du fichier main.cf de Postfix :
# postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf"
# postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
# postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"

# postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"

# postconf -e 'smtp_tls_security_level = may'
# postconf -e 'smtpd_tls_security_level = may'
# postconf -e 'smtp_tls_note_starttls_offer = yes'
# postconf -e 'smtpd_tls_loglevel = 1'
# postconf -e 'smtpd_tls_received_header = yes'

# postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.exampple.com/fullchain.pem'
# postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem'

# postconf -e 'smtpd_sasl_type = dovecot'
# postconf -e 'smtpd_sasl_path = private/auth'
# postconf -e 'smtpd_sasl_local_domain ='
# postconf -e 'smtpd_sasl_security_options = noanonymous'
# postconf -e 'broken_sasl_auth_clients = yes'
# postconf -e 'smtpd_sasl_auth_enable = yes'
# postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

On configure le fichier master.cf de Postfix afin qu'il ressemble à ça :
submission inet n       -       y       -       -       smtpd 
-o syslog_name=postfix/submission 
-o smtpd_tls_security_level=encrypt 
-o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no 
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject 
-o milter_macro_daemon_name=ORIGINATING

smtps     inet  n       -       y       -       -       smtpd 
-o syslog_name=postfix/smtps 
-o smtpd_tls_wrappermode=yes 
-o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no 
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject 
-o milter_macro_daemon_name=ORIGINATING

... et on redémarre Postfix : service postfix restart

####### DOVECOT 1 #######
19 - On va configurer Dovecot :
[* : veillez à bien changer "your_secret_password" par votre VARI mot de passe]
# nano /etc/dovecot/dovecot-sql.conf.ext
driver = mysqlconnect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=your_secret_password
default_pass_scheme = MD5-CRYPT
iterate_query = SELECT username AS user FROM mailbox
user_query = SELECT CONCAT('/var/mail/vmail/',maildir) AS home, \\  CONCAT('maildir:/var/mail/vmail/',maildir) AS mail, \\  5000 AS uid, 5000 AS gid, CONCAT('*:bytes=',quota) AS quota_rule \\  FROM mailbox WHERE username = '%u' AND active = 1
password_query = SELECT username AS user,password FROM mailbox \\  WHERE username = '%u' AND active='1'
 
# nano /etc/dovecot/conf.d/10-mail.conf
...
mail_location = maildir:/var/mail/vmail/%d/%n
...
mail_uid = vmail
mail_gid = vmail
...
first_valid_uid = 5000
last_valid_uid = 5000
...
mail_privileged_group = mail
...
mail_plugins = quota
...


# nano /etc/dovecot/conf.d/10-auth.conf
...
disable_plaintext_auth = yes
...
auth_mechanisms = plain login
...
#!include auth-system.conf.ext
!include auth-sql.conf.ext
...


# nano /etc/dovecot/conf.d/10-master.conf
...
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
...
}
...
service auth {
  ...
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }
  ...
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  ...
}
...
service auth-worker {
  user = vmail
}
...
service dict {
  unix_listener dict {
    mode = 0660
    user = vmail
    group = vmail
  }
}
...


# nano /etc/dovecot/conf.d/10-ssl.conf
...
ssl = yes
...
ssl_cert =
ssl_key =
ssl_dh =
...
ssl_cipher_list = EECDH+AES:EDH+AES+aRSA
...
ssl_prefer_server_ciphers = yes
...

# nano /etc/dovecot/conf.d/20-imap.conf
...
protocol imap { 
...
  mail_plugins = $mail_plugins imap_quota
  ...
}
...


# nano /etc/dovecot/conf.d/20-lmtp.conf
...
protocol imap {
  postmaster_address = postmaster@example.com
  mail_plugins = $mail_plugins
}
...


# nano /etc/dovecot/conf.d/15-mailboxes.conf
...
mailbox Drafts {
  special_use = \\Drafts
}
mailbox Spam {
  special_use = \\Junk
  auto = subscribe
}
mailbox Junk {
  special_use = \\Junk
}
...


# nano /etc/dovecot/conf.d/90-quota.confplugin {
quota = dict:User
quota::proxy::sqlquota
quota_rule = *:storage=5GB
quota_rule2 = Trash:storage=+100M
quota_grace = 10%%
quota_exceeded_message = Quota exceeded, please contact your system administrator.}

plugin {
quota_warning = storage=100%% quota-warning 100 %u
quota_warning2 = storage=95%% quota-warning 95 %u
quota_warning3 = storage=90%% quota-warning 90 %u
quota_warning4 = storage=85%% quota-warning 85 %u
}

service quota-warning {
executable = script /usr/local/bin/quota-warning.sh
user = vmail

unix_listener quota-warning {
  group = vmail
  mode = 0660
  user = vmail
}
}

dict {
sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}


[* : veillez à bien changer your_secret_password par votre VRAI mot de passe !]
# nano /etc/dovecot/dovecot-dict-sql.conf.ext
...
connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=your_secret_password
...
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
...
# map {
#   pattern = shared/expire/$user/$mailbox
#   table = expires
#   value_field = expire_stamp
#
#   fields {
#     username = $user
#     mailbox = $mailbox
#   }
# }
...


# nano /usr/local/bin/quota-warning.sh
#!/bin/sh
PERCENT=$1
USER=$2
cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=dict:User quota::noenforcing:proxy::sqlquota"
From: postmaster@example.com
Subject: Quota warning

Your mailbox is $PERCENT% full. Don't forget to make a backup of old messages to remain able to receive mails.
EOF


# sudo chmod +x /usr/local/bin/quota-warning.sh

... et on redémarre Dovecot : service dovecot restart

####### RSPAMD #######
20 - On commence par installer redis-server :
# apt install redis-server

21 - Puis on installe Rspamd :
# apt install software-properties-common lsb-release
# apt install lsb-release wget
# wget -O- https://rspamd.com/apt-stable/gpg.key | sudo apt-key add -echo "deb http://rspamd.com/apt-stable/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/rspamd.listsudo
# apt update
# apt install rspamd

22 - On va configurer Rspamd :
# nano /etc/rspamd/local.d/worker-normal.inc
bind_socket = "127.0.0.1:11333";


# nano /etc/rspamd/local.d/worker-proxy.inc
bind_socket = "127.0.0.1:11332";
milter = yes;
timeout = 120s;
upstream "local" {
  default = yes;
  self_scan = yes;
}


Il faut créer un mot de passe pour l'interface web de Rspamd :
# rspamadm pw --encrypt -p P4ssvv0rD

Notez bien la clé qui va s'afficher. Elle ressemblera à ça : $2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb

# nano /etc/rspamd/local.d/worker-controller.inc
password = "CLE_GENEREE_PLUS_HAUT";


Puis on con tinue la configuration :
# nano /etc/rspamd/local.d/classifier-bayes.conf
servers = "127.0.0.1";
backend = "redis";


# nano /etc/rspamd/local.d/milter_headers.conf
use = ["x-spamd-bar", "x-spam-level", "authentication-results"];


On rédémarre Rspamd :
# systemctl restart rspamd

23 - On va configurer Nginx pour l'interface web de Rspamd :
# nano /etc/nginx/conf.d/spam.example.com.conf
server {
listen 80;  
listen [::]:80;  
server_name spam.example.com;  

location / {  
proxy_pass http://127.0.0.1:11334/;     
proxy_set_header Host $host;     
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     
}  
}


On va demander et installer un certificat Lets'encrypt :
# certbot --nginx -d spam.example.com


24 - On va terminer la configuration de Postfix on intégrant les paramètres pour Rspamd :
# postconf -e "milter_protocol = 6"
# postconf -e "milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}"
# postconf -e "milter_default_action = accept"
# postconf -e "smtpd_milters = inet:127.0.0.1:11332"
# postconf -e "non_smtpd_milters = inet:127.0.0.1:11332"

... et on redémarre Postfix : systemctl restart postfix

####### DOVECOT 2 #######
25 - On termine la config de Dovecot en intégrant le module Sieve pour filtrer les mails
# apt install dovecot-sieve dovecot-managesieved

# nano /etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp {
postmaster_address = postmaster@example.com
mail_plugins = $mail_plugins sieve
}


# nano /etc/dovecot/conf.d/20-imap.conf
...
protocol imap {
...
mail_plugins = $mail_plugins imap_quota imap_sieve
...
}
...


# nano /etc/dovecot/conf.d/20-managesieve.conf
...
service managesieve-login {
inet_listener sieve {
port = 4190  
}
...
}
...
service managesieve {
process_limit = 1024
}
...


# nano /etc/dovecot/conf.d/90-sieve.conf
plugin {
...  
# sieve = file:~/sieve;active=~/.dovecot.sieve  
sieve_plugins = sieve_imapsieve sieve_extprograms  
sieve_before = /var/mail/vmail/sieve/global/spam-global.sieve  
sieve = file:/var/mail/vmail/sieve/%d/%n/scripts;active=/var/mail/vmail/sieve/%d/%n/active-script.sieve  

imapsieve_mailbox1_name = Spam  
imapsieve_mailbox1_causes = COPY  
imapsieve_mailbox1_before = file:/var/mail/vmail/sieve/global/report-spam.sieve  

imapsieve_mailbox2_name = *  
imapsieve_mailbox2_from = Spam  
imapsieve_mailbox2_causes = COPY  
imapsieve_mailbox2_before = file:/var/mail/vmail/sieve/global/report-ham.sieve  

sieve_pipe_bin_dir = /usr/bin  
sieve_global_extensions = +vnd.dovecot.pipe  
....  
}


26 - Puis on crée un répertoire qui va accueillir les scripts Sieve:
# mkdir -p /var/mail/vmail/sieve/global

# nano /var/mail/vmail/sieve/global/spam-global.sieve
require ["fileinto","mailbox"];


if anyof(
header :contains ["X-Spam-Flag"] "YES",  
header :contains ["X-Spam"] "Yes",  
header :contains ["Subject"] "*** SPAM ***"  
)  
{
fileinto :create "Spam";  
stop;  
}


# nano /var/mail/vmail/sieve/global/report-spam.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamc" ["learn_spam"];


# nano /var/mail/vmail/sieve/global/report-ham.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamc" ["learn_ham"];


... et on redémarre Dovecot : systemctl restart dovecot

Il faut maintenant compiler les scripts Sieve et appliquer les bons droits :
# sievec /var/mail/vmail/sieve/global/spam-global.sieve
# sievec /var/mail/vmail/sieve/global/report-spam.sieve
# sievec /var/mail/vmail/sieve/global/report-ham.sieve
# chown -R vmail: /var/mail/vmail/sieve/

####### DKIM #######
27 - DomainKeys Identified Mail (DKIM) est une méthode d'authentification par courrier électronique qui ajoute une signature cryptographique aux en-têtes des messages sortants.
Il permet au destinataire de vérifier qu'un courrier électronique prétendant provenir d'un domaine spécifique a bien été autorisé par le propriétaire de ce domaine.
Le but principal de cette opération est d'empêcher les messages électroniques falsifiés.

On peut avoir différentes clés DKIM pour tous les domaines et même plusieurs clés pour un seul domaine, mais pour simplifier cet article, nous allons utiliser une seule clé DKIM qui pourra ultérieurement être utilisée pour tous les nouveaux domaines.

On va créer un répertoire afin d'accueillir les clés Dkim :
# mkdir /var/lib/rspamd/dkim/

Et on va créer la clé Dkim :
# rspamadm dkim_keygen -b 2048 -s mail -k /var/lib/rspamd/dkim/mail.key /var/lib/rspamd/dkim/mail.pub>

Dans cet exemple, on utilise "mail" comme sélecteur Dkim.

On applique les bonnes permissions :
# chown -R _rspamd: /var/lib/rspamd/dkim
# chmod 440 /var/lib/rspamd/dkim/*

On va enseuite "dire" à Rspamd de regarder au bon endroit pour les clés Dkim :
# nano /etc/rspamd/local.d/dkim_signing.conf
selector = "mail";
path = "/var/lib/rspamd/dkim/$selector.key";
allow_username_mismatch = true;


Rspamd prend également en charge la signature ARC (Authenticated Received Chain). Rspamd utilise le module dkim pour traiter les signatures ARC afin que nous puissions simplement copier la configuration précédente :
# cp /etc/rspamd/local.d/dkim_signing.conf /etc/rspamd/local.d/arc.conf

... et on redémarre Rspamd : systemctl restart rspamd

####### DNS #######
28 - Vous devez aussi configurer vos DNS.
N'oubliez pas de configurer :
- une entrée MX (serveur de mail) :
Exemple : domain.com. MX 10 mail.s2ii.xyz.    
- une entrée SPF
Exemple : domain.com. TXT "v=spf1 a mx ~all"    
- une entrée _dmarc
Exemple : _dmarc.domain.com. TXT "v=DMARC1; p=none; adkim=r; aspf=r;"     
- une entrée Dkim
Vous trouverez la clé publique Dkim ici :
[* ceci est un exemple, n'oubliez pas d'adapter cette config avec votre VRAIE config]

# cat /var/lib/rspamd/dkim/mail.pub
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4yl"   
"nVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB"   
) ;

####### RAINLOOP WEBMAIL #######
29 - On télécharge Rainloop :
cd /tmp
wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip

# mkdir /var/www/webmail
# unzip rainloop-community-latest.zip -d /var/www/webmail
# chown -R www-data:www-data /var/www/webmail


30 - On crée le fichier Nginx pour Rainloop webmail :
# nano /etc/nginx/conf.d/webmail.example.com.conf
server {
listen 80;  
listen [::]:80;  
root /var/www/webmail;  
index index.php index.html index.htm;   
server_name webmail.example.com;  

client_max_body_size 100M;  

location / {  
try_files $uri $uri/ /index.php?$query_string;  
}       

location ~ \\.php$ {  
include snippets/fastcgi-php.conf;       
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;       
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;       
include fastcgi_params;       
}  

location ^~ /data {   
deny all;       
}    

}


31 - On crée et on installe un certificat Letsencrypt HTTPS :
# certbot --nginx -d webmail.example.com

32 - ET VOILA... ou presque. La configuration "technique" est terminée.
Reste à configurer les noms de domaines et les boites mail dans Postfixadmin : https://mail.example.com
Je n’explique pas cette partie. Vous pourrez trouver plein d'exemples sur le net.

33 - Une fois tous les domaines et les boites mail configurées dans Postfixadmin, on va pouvoir se connecter sur l'interface d'admin de Rainloop à cette adresse : https://webmail.example.com/?admin afin de configurer les domaines.
Une fois connecté à l'admin -- Onglet Domaine, Ajouter un domaine>

A - IMAP + SMTP
Partie IMAP
Serveur : mail.example.com
Sécurité : SSL/TLS
Port : 993

Partie SMTP

Serveur : mail.example.com
Sécurité : STARTTLS
Port : 587


Cliquez sur TEST, en bas à gauche de la fenêtre. Si TEST devient vert, la config est OK, si TEST devient rouge, il y a un truc qui cloche !

B - SIEVE
Cliquez sur configuration sieve (beta)
Cochez : Autoriser les scripts Sieve ET Autoriser les scripts personnels

Partie SIEVE
Serveur : mail.example.com
Sécurité : STARTTLS
Port : 4190

Partie SMTP
Serveur : mail.example.com
Sécurité : STARTTLS
Port : 587

Cliquez enfin sur Modifier.


Refaite cette même configuration pour chaque domaine que vous allez utiliser !

34 - L'interface du webmail étant elle située ici : https://webmail.example.com

Gravatar de citizenz7
Original post of citizenz7.Votez pour ce billet sur Planet Libre.

elementary OS : Mise à jour de septembre

mercredi 9 octobre 2019 à 10:00

Traduction faite avec DeepL : Update for septembre, 2019

Mises à jour des applications, des paramètres et bien d’autres choses encore – le coup d’envoi du Hacktoberfest

Bon mois d’octobre ! Alors que vous vous installez dans la saison automnale (ou printanière pour ceux d’entre vous qui habitez dans l’hémisphère Sud !), nous sommes de retour pour partager les progrès du mois dernier sur elementary OS et toutes les mises à jour que nous avons publiées.

Hacktoberfest 🍂👩‍💻🎃

Mais d’abord, cette année, nous participons encore une fois à la Hacktoberfest ! Nous avons commencé à étiqueter les grands problèmes pour que les gens s’en occupent ce mois-ci – si vous avez voulu contribuer au code de elementary OS mais que vous ne saviez pas par où commencer, c’est le moment idéal pour le faire.

Si vous êtes déjà un contributeur régulier, vous pouvez aussi aider ce mois-ci en étiquetant les problèmes avec le label Hacktoberfest. Rappelez-vous, Hacktoberfest est idéal pour les gens qui n’ont jamais contribué à elementary OS, donc les problèmes étiquetés devraient être relativement autonomes, et des contributeurs réguliers devraient être disponibles pour aider à répondre à toute question.

Applications

En septembre, nous avons publié quelques mises à jour des applications principales :

Files

La dernière version de Files est énorme ! La principale nouveauté est la prise en charge initiale de l’API CloudProviders, ce qui signifie que les fournisseurs de services de synchronisation de fichiers et de stockage dans le cloud comme NextCloud peuvent utiliser cette API standardisée et se connecter directement à l’application Files, sans avoir à faire quoi que ce soit de spécial pour les systèmes elementay OS. Cette API est également implémentée dans les fichiers GNOME, et nous espérons qu’elle sera adoptée plus largement sur les postes de travail libres (FreeDesktops). Plus d’informations sur l’API et son contexte sont disponibles sur le blog de Carlos Soriano(en).

Nouveau style en damier derrière les vignettes transparentes

Nouveau style en damier derrière les vignettes transparentes

De plus, nous avons publié plusieurs correctifs et améliorations pour Files. La copie des fichiers devrait être plus fiable, la visibilité de l’étiquette couleur a été améliorée en utilisant un style sombre (pas encore officiellement supporté…), la sélection des fichiers en utilisant la commande SHIFT devrait être plus fiable, le style de la barre d’espace disque a été amélioré, le positionnement initial de la fenêtre a été amélioré (maintenant au centre de l’affichage principal), et nous dessinons maintenant un fond en damier derrière des vignettes d’image transparente.
Gauche : Ancien style de barre d'espace disque | Droite : Nouveau style de barre d'espace disque

Gauche : Ancien style | Droite : Nouveau style

Nous avons également poursuivi notre travail de nettoyage et de modernisation du code de base de Files, en portant plus de code de C à Vala et en supprimant le code obsolète.

Camera

Another significant release this past month was for Camera. This latest release greatly improves hardware compatibility for cameras on several popular laptops, including many Dell models. If opening Camera showed “no device” before, give it a try again now!

Une autre sortie importante du mois dernier a été pour Camera. Cette dernière version améliore considérablement la compatibilité matérielle des Webcam sur plusieurs ordinateurs portables populaires, dont de nombreux modèles Dell. Si l’ouverture de la caméra ne montrait « pas d’appareil » avant, réessayez maintenant !

Camera

Les performances ont également été grandement améliorées sur de nombreux modèles de Webcam. La position de la fenêtre de la caméra est maintenant sauvegardée, et nous avons nettoyé un peu de code pour rendre le bouton de la minuterie plus fiable.

Paramètres du système

Displays

Nous avons publié une petite mise à jour de la fiche de paramétrage des écrans qui corrige les minutes d’entrée dans le programme Night Light, plus quelques corrections sous le capot.

A propos

La section A propos des Paramètres système affiche des informations sur le système et certaines actions à l’échelle du système. La dernière version améliore l’affichage des informations de stockage, cache le bouton « Vérifier les mises à jour » si AppCenter est absent (c’est-à-dire sur d’autres OS utilisant notre application System Settings), et les pastilles montrant l’architecture du processeur car elle n’était pas fiable et nous ne supportons officiellement que les processeurs 64-bit. Enfin, le bouton « Signaler un problème » lance maintenant la nouvelle application Feedback au lieu d’utiliser son propre dialogue de feedback interne.

Granite

La dernière version de Granite, notre bibliothèque de développeurs pour la création d’applications, inclut quelques corrections et améliorations. Il est important de noter que Granite fournit désormais la prise en charge de l’API de lancement pour les badges et les barres de progression, remplaçant ainsi le besoin de LibUnity dans les applications. Nous avons ajouté la touche Equals aux méthodes accel, ce qui signifie que les infobulles des raccourcis clavier afficheront désormais un texte localisé au lieu du symbole =. DynamicNotebook, la barre d’onglets de classe navigateur, a gagné le support de « Close Tabs to the Right », et nous avons corrigé un problème où la fermeture rapide des onglets rouvrait parfois les onglets fermés.

Get It

Comme pour chaque mise à jour mensuelle, vous pouvez vous attendre à d’autres corrections de bogues, améliorations et mises à jour de traduction. N’oubliez pas d’ouvrir AppCenter et de cliquer sur le bouton « Update All » pour obtenir toutes ces mises à jour.


Comme toujours, merci à tous ceux qui ont acheté une application sur AppCenter, à nos supporters sur Bountysource et Patreon, et à ceux qui ont acheté une copie elementary OS ou de merchandising dans notre boutique. Chaque contribution contribue à rendre tout cela possible, et nous ne serions pas ici sans vous. Si vous souhaitez aider à améliorer l’OS élémentaire, n’hésitez pas à vous impliquer !

Vous pouvez en discuter sur le forum en suivant ce lien.

Le billet Mise à jour de septembre a été publié sur le site de la elementary OS -

Gravatar de elementary OS
Original post of elementary OS.Votez pour ce billet sur Planet Libre.

Articles similaires

RaspbianFrance : Installez un clavier virtuel tactile sur la Raspberry Pi.

mardi 8 octobre 2019 à 16:30
Clavier virtuel sur une Raspberry Pi tactile.

Si vous utilisez un écran tactile avec votre Raspberry Pi, vous avez probablement déjà été confronté à un problème, l’absence de clavier virtuel !

Bien que la fondation Raspberry Pi propose elle même un écran tactile pour la Raspberry Pi, Raspbian n’intègre pas de clavier virtuel qui nous permette de taper du texte directement depuis un écran tactile.

Aujourd’hui, nous allons donc voir comment installer un clavier virtuel sur votre Raspberry Pi pour écrire depuis votre écran !

Le matériel nécessaire pour ce tutoriel

Afin de réaliser ce tutoriel, vous aurez besoin du matériel suivant :

Ce tuto a été réalisé avec l’écran tactile officiel, mais les écrans tactiles non officiels fonctionneront eux aussi !

Un clavier virtuel pour la Raspberry Pi

Des claviers virtuels sous Linux, il en existe des tas, mais nous avons besoin d’en trouver un qui soit compatible avec la Raspberry Pi et si possible disponible directement dans les dépôts Raspbian.

Après quelques recherches, mon choix s’est arrêté sur le clavier virtuel Florence, développé par un François Agrech. C’est un clavier simple et efficace, avec un raccourci pour l’afficher ou le masquer quand nécessaire.

Installer notre clavier tactile sur la Raspberry Pi

Installer Florence sur la Raspberry Pi est relativement simple, puisqu’il est présent dans les dépôts Raspbian. Il nous suffit donc de l’installer en passant par ces dépôts avec les commandes suivantes :

sudo apt update
sudo apt install florence -y

La première commande va mettre à jour la liste des dépôts de Raspbian. La seconde va installer Florence. Le clavier virtuel est désormais disponible en cliquant sur le menu de Raspbian, et dans la sous-catégorie « Accès universel ».

Raccourci clavier virtuel menu raspbian
Et voilà, en cliquant sur le l’icône du clavier, vous pouvez lancer votre clavier virtuel !

Le clavier virtuel se ferme tout seul !

Si vous vous arrêtez là, vous allez avoir un étrange bug : quand vous tapez sur un touche du clavier tactile, il se ferme… Pourquoi ça ?

Il se trouve que pour pouvoir communiquer avec les autres programmes, le clavier tactile a besoin d’utiliser un protocole nommé D-Bus et d’un paquet spécifique nommé at-spi2-core.

Le paquet at-spi2-core est une sorte de surcouche à D-Bus et utilisé pour communiquer avec les lecteurs d’écrans utilisés par les personnes handicapées. Il est donc utilisé par Florence et nécessaire à son fonctionnement.

Nous allons donc devoir installer at-spi2-core en plus du clavier virtuel. Là encore, il nous suffit de passer par les dépôts !

sudo apt install at-spi2-core -y

Et voilà, si vous relancez le clavier, il apparaît tout beau tout propre, et si vous cliquez sur une touche elle fonctionne !

Clavier virtuel sous raspbian
Il est beau mon clavier, mais il est en Anglais…

Changer la langue du clavier virtuel.

Maintenant que notre clavier est fonctionnel, il ne nous reste plus qu’à changer la langue et adapter le clavier à notre goût.

Pour changer la langue du clavier, deux solutions. Soit vous utilisez la commande setxkbmap, qui permet de définir la langue du clavier, et vous devrez alors l’ajouter à votre fichier ~/.bashrc afin qu’elle soit lancée à chaque démarrage.

Soit, et c’est la solution qui me semble la plus propre, vous utilisez directement les réglages de Raspbian.

Pour la première solution, tapez les commandes suivantes (remplacez FR par le code de la langue que vous souhaitez) :

setxkbmap fr
echo "setxkbmap fr" >> ~/.bashrc

Pour la seconde solution, cliquez sur le menu de Raspbian, allez dans la partie « Préférences », puis « Clavier et souris », et dans la partie clavier modifier le réglage « Disposition du clavier » pour celui de votre choix.

Vous devrez peut-être relancer le clavier virtuel.

Clavier virtuel avec langue adaptée.
Et voilà, notre clavier virtuel est désormais dans la bonne langue !

Quelques réglages supplémentaires

Dernier point, vous pouvez régler le comportement du clavier. Par exemple l’obliger à rester toujours au premier plan, ajouter un pavé numérique, ou modifier son apparence !

Pour cela, il vous suffit de cliquer sur la petite clé anglaise à gauche du clavier.

Faîtes attention toutefois à laisser le réglage de comportement du pointeur sur « Souris ». Si vous le passez sur « Écran tactile », vous aurez probablement des erreurs de saisie, des lettres doublées, etc.

Et voilà, vous avez un clavier virtuel sur votre Raspberry Pi qui vous permettra d’écrire directement depuis un écran tactile !

Lire l'article complet : Installez un clavier virtuel tactile sur la Raspberry Pi.

Gravatar de RaspbianFrance
Original post of RaspbianFrance.Votez pour ce billet sur Planet Libre.

Mathias : Sortie de Wazo Platform 19.13

mardi 8 octobre 2019 à 11:10

La team Wazo vient d’annoncer la sortie de Wazo Platform 19.13.

Wazo Platform est une suite d’outils permettant de construire une infrastructure de communication IP programmable de classe opérateur. La suite est publiée en opensource, le code étant disponible sur le repo github de Wazo.

L’idée de fournir une solution de communication libre permettant de concevoir et de construire un système de communication adapté aux besoins spécifiques de chaque entreprise.

Les briques techniques sont construites autour de projets libres comme Asterisk, Kamailio, PostgreSQL et s’appuient fortement sur le langage de programmation python.

Pour ceux qui ne me connaissent pas, je travaille sur ce fabuleux projet, donc si vous avez des questions, n’hésitez pas.

Lien de la news : Introducing Wazo Platform 19.13

Cet article Sortie de Wazo Platform 19.13 est apparu en premier sur Blog des télécoms - Par Mathias, expert télécom rédigé par Mathias.

Gravatar de Mathias
Original post of Mathias.Votez pour ce billet sur Planet Libre.