Vous êtes-vous déjà trouvé (récemment) dans la situation où votre courriel personnel a été divulgué parce qu'un site web a été piraté ?
Ce ne serait pas cool d'avoir un email fwd.facebook@mydomain.com et de l'utiliser lors de l'inscription sur Facebook ?
Encore mieux si vous n'aviez pas à configurer un tel compte de courrier électronique sur votre client de messagerie ?
La solution que je vous présente ici vous permet d'utiliser n'importe quel email sous la forme fwd.xxx@domaine.com pour le transférer vers un seul compte email de manière transparente, sans aucune configuration préalable lors de la création d'un nouveau compte email.
C'est cool, simple et beaucoup plus utile, parce que maintenant, vous saurez quel site web vend votre adresse électronique au spammeur, quel site web a été piraté et ne l'a jamais dit, etc.
Ok, donnons la recette maintenant.
Nous mettrons en place un serveur SMTP de courrier électronique Haraka qui sera chargé d'accepter uniquement le courrier électronique pour votre domaine, en utilisant un format spécifique pour la partie utilisateur du courrier électronique, et de le transmettre à vos courriers électroniques personnels. Ensuite, nous mettrons à jour les enregistrements DNS afin que d'autres puissent vous envoyer des courriels sur le nouveau serveur de votre domaine Enfin, nous veillerons à ce que ce serveur de messagerie ne soit pas un relais.
a.b.c.d
(par exemple : 134.23.24.54), si c'est IPv6, elle est au format [abc:def::234]
.domaine.com
est votre nom de domaine. Je suppose que vous avez déjà des règles DNS qui relient votre domaine à l'adresse IP de votre serveur (vous avez donc une règle "domaine.com A IN IP" dans votre zone). En règle générale, si vous faites un "ping domaine.com" depuis n'importe où, il devrait répondre avec votre IP.votre@email
votre adresse électronique personnelle (privée)/home/you
À remplacer par le chemin vers votre répertoire homeHaraka a besoin du nodeJS pour son noyau. Alors installons-le d'abord :
$ sudo su
# curl -sL https://deb.nodesource.com/setup_10.x | bash -
# apt-get install -y nodejs gcc g++ make swaks
Ensuite, parce que vous pourriez avoir des problèmes de versionnement à l'avenir, c'est une bonne idée de charger un gestionnaire de versionnement de nodeJS :
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
$ export NVM_DIR="$HOME/.nvm"
$ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
$ [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Nous avons besoin de la version LTS de nodejs:
$ nvm install v10.15.0
Puis installons Haraka (attention à la majuscule):
$ npm install -g Haraka
Cela devrait donner un avertissement mais pas d'erreurs. Assurez-vous que tout fonctionne en tapant "$ haraka -h".
Cela devrait donner cette réponse :
$ haraka -h
Haraka.js — A Node.js Email Server project
Usage: haraka [options] [path]
Options:
-v, --version Outputs version number
-h, --help Outputs this help message
-h NAME Shows help for NAME
-c, --configs Path to your config directory
-i, --install Copies the default configs to a specified dir
-l, --list List the plugins bundled with Haraka
-p, --plugin Generate a new plugin with the given name
-f, --force Force overwriting of old files
--qlist List the outbound queue
--qstat Get statistics on the outbound queue
--qunstick Unstick (force delivery) for a given domain
-o, --order Show all registered plugins and their run order
-t PLUGIN Plugin test mode
--------------- PLUGIN TEST MODE OPTIONS (all optional) --------------
--ip IP IP address to use
--helo HELO HELO to use
--ehlo EHLO EHLO to use
--envfrom FROM MAIL FROM to use
--envfrom TO RCPT TO(s) to use
--message FILE Message file to use
--dump-mime Dump the MIME structure and body text
--dump-stream Dump the MessageStream to stdout
--skip-deny Continue running hooks after DENY/DENYSOFT
--set-relay Set connection.relaying
Ensuite, nous devons l'installer définitivement pour qu'il puisse être exécuté en tant que root (ne vous inquiétez pas, il se dégradera pour devenir un utilisateur non privilégié par la suite).
$ sudo ln -sf /home/you/.nvm/versions/node/v10.15.0/bin/haraka /usr/bin/haraka
$ sudo mkdir /var/lib/haraka
$ sudo haraka -i /var/lib/haraka
La configuration et la file d'attente de Haraka seront stockées dans /var/lib/haraka
et fonctionneront en tant qu'utilisateur non privilégié smtp
. Créons un tel utilisateur et un tel groupe :
$ sudo addgroup smtp
$ sudo adduser --system --no-create-home --disabled-password --disabled-login smtp --ingroup smtp
Ensuite, nous aurons besoin d'un plugin spécifique ici pour la transmission appelé rcpt_to.alias_forword
(oui, le nom est faux) :
$ cd /home/you/.nvm/versions/node/v10.15.0/lib/node_modules/Haraka/plugins
$ wget https://raw.githubusercontent.com/guoyiang/haraka-alias-forward/master/plugins/rcpt_to.alias_forword.js
$ cd ../config
$ wget https://raw.githubusercontent.com/guoyiang/haraka-alias-forward/master/config/rcpt_to.alias_forword
Contrairement aux autres serveurs de courrier électronique (avec ces termes complexes comme MTA, MDA, MSA, LDA, etc...), ce serveur n'est pas chargé de conserver (mettre en file d'attente) les courriers électroniques. Vous ne vous souciez pas du filtrage du spam ici, ni de l'antivirus, etc. Ce travail sera effectué par votre fournisseur de messagerie habituel.
En général, l'architecture de Haraka est basée sur des plugins. Pour chaque plugin sélectionné, vous devez fournir une configuration. Dans cet exemple, je fonctionne avec l'ensemble minimum de plugins pour la tâche (vous êtes libre d'en ajouter d'autres plus tard, mais commencez simple, testez puis améliorez, et non l'inverse).
Les plugins que nous utilisons sont les suivants (tapez les commandes ci-dessous) :
$ sudo mv /var/lib/haraka/config/plugins /var/lib/haraka/config/plugins.old
$ sudo su
# echo -e "syslog\ndnsbl\nhelo.checks\nrcpt_to.alias_forword\ndata.headers\nqueue/discard\nlimit" /var/lib/haraka/config/plugins
# nano /var/lib/haraka/config/rcpt_to.alias_forword
Cette dernière commande devrait avoir ouvert un éditeur, où vous entrerez ceci (en remplaçant domain par votre nom de domaine et your@email par votre e-mail personnel :
{
"accept_when_match" : true,
"discard_income_mail" : true,
"alias": {
"domain": [
{
"local_name": "fwd.*",
"forward_to": "your@email"
}]
}
}
Si vous souhaitez également accepter le courrier normal, vous pouvez ajouter des règles sans joker dans la section "domaine" comme ceci :
{
"local_name" : "info",
"forward_to": "your@email"
}
l acceptera le domaine info
et le transmettra à votre
courrier électronique, ainsi que le domaine info-quelque_chose
, mais pas le domaine quelque_chose
.
Configurez le serveur avec $ sudo nano /var/lib/haraka/smtp.ini
et entrez ceci (en remplaçant IP par l'adresse IP de votre serveur) :
listen=IP:25,IP:587,[IPv6]:25,[IPv6]:587
public_ip=IP
user=smtp
group=smtp
daemonize=true
daemon_log_file=/var/log/haraka.log
daemon_pid_file=/var/run/haraka.pid
spool_dir=/var/spool/haraka
spool_after=524288
Puis testez que le serveur fonctionne:
$ sudo kill `cat /var/run/haraka.pid`; sudo rm /var/run/haraka.pid; sudo haraka -c /var/lib/haraka
Si le serveur fonctionne, vous ne devriez pas recevoir de message disant "serveur en panne". Veuillez noter que la configuration ci-dessus écoute sur le port TLS (sécurisé). Dans ce tutoriel, je n'explique pas comment obtenir un certificat pour votre domaine et comment faire fonctionner le plugin TLS. Si Haraka se plaint, supprimez le port 587 de la configuration ci-dessus. Ce sera une bonne idée de configurer TLS plus tard, car au moins pour un man-in-the-middle, le courrier électronique transite chiffré sur l'internet
Nous devons maintenant mettre en place l'enregistrement MX dans votre zone DNS. En général, lorsque quelqu'un veut envoyer un courrier à @some.com
, il interroge l'enregistrement DNS en tapant MX du domaine some.com
. Il sera redirigé vers une adresse de serveur et se connectera ensuite à cette adresse et au port 25 (SMTP) ou 587 (ESMTP) pour livrer le courrier.
De notre côté, nous devrons simplement indiquer qu'un serveur SMTP écoute sur notre serveur en ajoutant un enregistrement DNS.
A condition que vous ayez déjà un *domain*. 3600 IN A *IP*
le numéro n'est pas si important, vous devrez l'ajouter (en remplaçant domaine par votre nom de domaine, attention au dernier point qui est requis) :
domain. 3600 IN MX 10 domain.
Si je parle chinois ici, vous devrez vous rendre sur le site de votre registrar, c'est généralement là que vous pouvez modifier l'enregistrement de la zone DNS de votre domaine. Par exemple, si j'ai le domaine "bob.com" sur mon serveur situé à 1.1.1.1, je devrais obtenir l'enregistrement suivant :
bob.com. 3600 IN A 1.1.1.1
bob.com. 3600 IN MX 10 bob.com.
Maintenant que le serveur est démarré et que la zone de domaine est prête, il est temps de tester.
Essayez d'envoyer un courrier électronique soit par la ligne de commande (via swaks
), soit par votre programme de courrier électronique à bob@domain
.
Vous devriez recevoir un avis de rejet (si ce n'est pas le cas, vérifiez la configuration ci-dessus)
Essayez ensuite d'envoyer un courrier à fwd.test@domain
et, comme par magie, il devrait apparaître dans votre boîte aux lettres personnelle quelques secondes plus tard.
Si tout fonctionne correctement, nous devrons finaliser l'installation.
Tout d'abord, nous ne permettrons à l'utilisateur smtp que de lire/écrire dans le dossier de travail haraka et de créer un service systemd afin que le serveur de messagerie soit démarré au démarrage.
Utilisez votre éditeur préféré pour créer le fichier /lib/systemd/system/haraka.service
en tant que root qui doit contenir :
[Unit]
Description=Haraka MTA
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/haraka.pid
ExecStart=/usr/bin/haraka -c /var/lib/haraka
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Puis lancez ces commandes:
$ sudo chown smtp:smtp -R /var/lib/haraka
$ sudo chmod 0660 -R /var/lib/haraka
$ sudo systemctl enable haraka
$ sudo kill `cat /var/run/haraka.pid`; sudo rm /var/run/haraka.pid
$ sudo systemctl start haraka
Si vous utilisez un gestionnaire de mots de passe (vous devriez), maintenant, chaque fois que vous naviguerez et que vous aurez besoin de créer un compte sur un site web, vous donnerez l'adresse électronique suivante fwd.websitename@domain
et un mot de passe généré que vous enregistrerez dans votre gestionnaire de mots de passe.
Veuillez noter cependant que vous ne pouvez pas répondre à ces e-mails (à moins que vous ne créiez l'identité dans votre client de messagerie, mais c'est un peu pénible), donc ceci est principalement utilisé pour les sites web qui ne s'attendent jamais à recevoir des e-mails comme les site web d'achat, newsletter, etc...
Ensuite, chaque fois que vous recevrez du spam, vous verrez dans l'en-tête quel site a vendu votre contact ou s'est fait pirater. C'est ensuite à vous de le répliquer ;-)
Mise à jour : Veuillez consulter les étapes mises à jour requises pour garantir la livraison des mails à 100% avec les nouvelles politiques des serveurs SMTP en 2020.