Comme annoncé dans un précédent post j’étais dans une impasse avec mon site et domaine funix.org avec une offre obsolète d’hébergement web mutualisé sur Dedibox/Online.net en voie de disparition et je me posais la question de basculer également chez Infomaniak comme mon autre site et domaine hoarau.org.
Online.net devenu Scaleway me proposait de migrer vers une offre d’hébergement cloud et malgré mes réticences initiales, j’ai choisi de migrer car finalement à fonctionnalités plus ou moins équivalentes ça restait moins cher chez Scaleway d’autant plus que j’ai bénéficié de la migration de mes 5 adresses email sans coût supplémentaire.
La principale difficulté rencontrée lors de la migration et de remettre en place les serveurs IMAP de réception et SMTP d’envoi de mail qui sont couplés pour l’un à fetchmail et dovecot et l’autre au dinosaure sendmail sur mon serveur local. Pour la partie IMAP il a suffit de régénérer les mots de passe de mes comptes emails pour d’indiquer le nouveau serveur IMAP. Pour la partie SMTP, ça a été bien plus compliqué car du côté scaleway il est annoncé que seules les connexions chiffrées et authentifiées sur le port 465 sont acceptées. J’ai dû modifier ainsi mon fichier /etc/mail/auth/clientinfo en y indiquant le nom du serveur SMTP et mon login de connexion
AuthInfo:serveur.smtp.scaleway "U:root" "I:olivier.hoarau@funix.org" "P:password" "M:LOGIN"
et voilà le fichier de configuration complet de sendmail
include(`../m4/cf.m4')dnl
OSTYPE(`linux')dnl
FEATURE(redirect)dnl
FEATURE(nocanonify)dnl
FEATURE(always_add_domain)dnl
FEATURE(local_procmail)dnl
GENERICS_DOMAIN(ultra.kervao.fr ultra localhost)
FEATURE(genericstable)
FEATURE(masquerade_envelope)dnl
FEATURE(relay_entire_domain)dnl
FEATURE(accept_unresolvable_domains)dnl
define(`confDOMAIN_NAME',`scaleway.com')dnl
define(`SMTP_MAILER_FLAGS',`e9')dnl
define(`confCON_EXPENSIVE', `True')dnl
define(`confME_TOO', `True')dnl
define(`confCF_VERSION', `Sendmail de FUNIX')dnl
define(`confCOPY_ERRORS_TO', `Postmaster')dnl
define(`confDEF_CHAR_SET', `UTF-8')dnl
define(`confMIME_FORMAT_ERRORS', `True')dnl
define(`SMART_HOST', `[serveur.mail.scaleway]')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 25')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 25')dnl
define(`confAUTH_OPTIONS', `A p')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash -o /etc/mail/auth/clientinfo.db')dnl
define(`confRECEIVED_HEADER', `from scaleway.com
by scaleway.com ($v/$Z)$?r with $r$. id $i$?u
for $u; $|;
$.$b')
define(`confTO_QUEUEWARN', `24h')dnl
MAILER(local)
MAILER(smtp)
Kpirateo hash -o /etc/mail/pirateo
LOCAL_RULE_0
R$ < @ $ > $* $: < $(pirateo $1 @ $2 $: $) > $1 < @ $2 > $3
R< $ > $ < @ $ > $* $@ $>97 $1
R<> $ < @ $ > $* $: $1 < @ $2 > $3
INPUT_MAIL_FILTER(`clmilter', `S=local:/var/log/clamav/clmilter.sock, F=, T=S:4m;R:4m')dnl
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl
define(`confMILTER_MACROS_CONNECT',`t, b, j, _, {daemon_name}, {if_name}, {if_addr}')dnl
define(`confMILTER_MACROS_HELO',`s, {tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}')dnl
define(`confMILTER_MACROS_ENVFROM',`i, {auth_authen}, {auth_type}')dnl
define(`confMILTER_MACROS_ENVRCPT',`r, v, Z')dnl
define(`confINPUT_MAIL_FILTERS', `clmilter,spamassassin')dnl
define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl
define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl
define(`confSERVER_CERT', `/etc/pki/tls/sendmail_certificate.pem')dnl
define(`confSERVER_KEY', `/etc/pki/tls/private/sendmail_key.pem')dnl
Et voilà ce qu’un envoi de mail avec connexion avec la commande sendmail -q -v donne (pour des considérations de sécurité, j’ai modifié ou mis des X pour cacher certains caractères et informations)
Running /var/spool/mqueue/5BSCIRTD1785153 (sequence 1 of 1)
<olivier.hoarau@gmail.com>... Connecting to serveur.smtp.scaleway port 25 via relay...
220-XX-XXX.XXX.fr-par.scw.cloud ESMTP Exim 4.99 #2 Sun, 28 Dec 2025 13:18:32 0100
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.
>>> EHLO scaleway.com
250-XX-XXX.XXX.fr-par.scw.cloud Hello XX.XXX.XX.XXX.rev.sfr.net [XXX.XX.XXX.XX]
250-SIZE 52428800
250-LIMITS MAILMAX=1000 RCPTMAX=50000
250-8BITMIME
250-PIPELINING
250-PIPECONNECT
250-STARTTLS
250 HELP
>>> STARTTLS
220 TLS go ahead
>>> EHLO scaleway.com
250-XX-XXX.XXX.fr-par.scw.cloud Hello XX.XXX.XX.XXX.rev.sfr.net [XXX.XX.XXX.XX]
250-SIZE 52428800
250-LIMITS MAILMAX=1000 RCPTMAX=50000
250-8BITMIME
250-PIPELINING
250-PIPECONNECT
250-AUTH PLAIN LOGIN
250 HELP
>>> AUTH LOGIN
334 VXNlcm5hbWU6
>>> XXXXXXXllcf5ob2FyYXVAZnVuaXgub3Jn
334 XXXXXX3dvcmQ6
>>> XXXXXXX90b25lMjk/
235 Authentication succeeded
>>> MAIL From:<olivier.hoarau@funix.org> SIZE=1032 BODY=7BIT
250 OK
>>> RCPT To:<olivier.hoarau@gmail.com>
>>> DATA
250 Accepted
354 Enter message, ending with "." on a line by itself
>>> .
250 OK id=1vZpjF-0000000EQnQ-1Yhn
<olivier.hoarau@gmail.com>... Sent (OK id=1vZpjF-0000000EQnQ-1Yhn)
Closing connection to serveur.smtp.scaleway.
>>> QUIT
221 XX-XXX.XXX.fr-par.scw.cloud closing connection
En détaillant étape par étape
- Connexion au serveur SMTP de scaleway
Connecting to serveur.smtp.scaleway. port 25 via relay...
Sendmail se connecte sur le port 25 du serveur SMTP défini par le paramètre SMART_HOST. Il n’utilise pas le port 465 comme annoncé par scaleway et je n’ai pas besoin d’utiliser un outil supplémentaire comme stunnel.
2. STARTTLS activé
>>> STARTTLS
220 TLS go ahead
La connexion est chiffrée grâce à STARTTLS et c’est sans doute pour cela que je peux me connecter au serveur.
3. Authentification réussie
>>> AUTH LOGIN
235 Authentication succeeded
Le serveur distant accepte le login et mot de passe tels que définis dans le fichier clientinfo.
4. Mail accepté
>>> MAIL From:<olivier.hoarau@funix.org> ...
>>> RCPT To:<olivier.hoarau@gmail.com>
>>> DATA
250 OK id=1vZpjF-0000000EQnQ-1Yhn
Le message est relayé correctement, la queue sendmail se vide sans erreur 550 (adresse du destinataire rejetée) ou 503 (serveur indisponible).
5. Fermeture propre
>>> QUIT
221 XX-XXX.XXX.fr-par.scw.cloud closing connection
Pour le reste mon site funix.org est maintenant à nouveau accessible, j’ai encore juste un point à régler avec la directive PHP suivante qu’il ne comprend pas.
$lang = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
Il me reste également à découvrir la richesse offerte par la console cpanel scaleway.
J’aime ça :
J’aime chargement…