Projet

Général

Profil

Tâche #35574

Scénario #35547: L'adresse d'envoi des mails Zéphir a changé suite à la MAJ

Étude

Ajouté par Benjamin Bohard il y a 8 mois. Mis à jour il y a 6 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
18/09/2023
Echéance:
% réalisé:

100%

Restant à faire (heures):
0.0

Historique

#1 Mis à jour par Benjamin Bohard il y a 8 mois

Pour la question du mode local ou distant, le critère de sélection est la valeur de la variable MAIL_ADRESSE dans la configuration Zéphir qui est toujours "localhost". En définitive, le mode devrait toujours être local sauf à modifier le fichier de configuration.

Le champ d’en-tête mail_from est également tiré de la configuration Zéphir (MAIL_ACCOUNT) qui est soit équivalent à la variable creole system_mail_from, soit une chaîne vide si l’autre variable n’est pas disponible.

#2 Mis à jour par Benjamin Bohard il y a 8 mois

  • Statut changé de Nouveau à En cours

#3 Mis à jour par Benjamin Bohard il y a 7 mois

Test d’envoi avec la fonction pyeole.sendmail.send_mail et les paramètres suivants :

Retour d’exim dans les logs

oct. 11 08:44:17 zephir exim[527685]: 2023-10-11 08:44:17 1qqSx7-002DH3-Kr <= bbohard@cadoles.com U=root P=local S=429
oct. 11 08:44:17 zephir exim[527686]: 2023-10-11 08:44:17 1qqSx7-002DH3-Kr == to@cadoles.com R=satellite_route T=remote_smtp defer (-54): retry time not reached for any host for 'cadoles.com'

Contenu du message

cat /var/spool/exim4/input/1qqSx7-002DH3-Kr-H
1qqSx7-002DH3-Kr-H
root 0 0
<bbohard@cadoles.com>
1697006657 0
-received_time_usec .646499
-received_time_complete 1697006657.660171
-ident root
-received_protocol local
-body_linecount 1
-max_received_linelength 44
-auth_id root
-auth_sender root@ac-test.fr
-allow_unqualified_recipient
-allow_unqualified_sender
-local
-tls_resumption A
XX
1
to@cadoles.com

178P Received: from root by zephir.ac-test.fr with local (Exim 4.95)
        (envelope-from <bbohard@cadoles.com>)
        id 1qqSx7-002DH3-Kr
        for to@cadoles.com;
        Wed, 11 Oct 2023 08:44:17 +0200
045  Content-Type: text/plain; charset="us-ascii" 
018  MIME-Version: 1.0
032  Content-Transfer-Encoding: 7bit
017  subject: subject
023F From: from@cadoles.com
019T To: to@cadoles.com
050I Message-Id: <E1qqSx7-002DH3-Kr@zephir.ac-test.fr>
034* X-rewrote-sender: root@ac-test.fr
041* X-rewrote-sender: root@zephir.ac-test.fr
038  Date: Wed, 11 Oct 2023 08:44:17 +0200

L’envelope-from est bien construit à partir de la variable system_mail_from alors que le header from est celui passé en argument à la fonction send_mail

msg = MIMEText(message)
msg['From'] = mailfrom

#4 Mis à jour par Benjamin Bohard il y a 7 mois

Dans le cadre de l’envoi par Zéphir, dans uucp_rpc.py, le contenu du from est établi dans la configuration /usr/lib/python3/dist-packages/zephir/config.py

MAIL_ACCOUNT = conf.get_creole("system_mail_from", "") or "" 

Cette variable n’est pas modifiée, ni dans /usr/lib/python3/dist-packages/zephir/backend/config.py, ni dans uucp_rpc.py.

#5 Mis à jour par Benjamin Bohard il y a 7 mois

La piste du rewrite ne semble pas cohérente avec l’observation faite : le from réécrit est celui de l’enveloppe alors que c’est celui de l’en-tête qui ne correspond pas à ce qu’on attend.

#6 Mis à jour par Benjamin Bohard il y a 7 mois

Dans le cas précis, le problème via de la combinaison d’un nom de messagerie d’établissement différent du nom de domaine et de l’absence de réécriture de l’entête from.

Avec le passage de la variable system_mail_from_for_headers à oui, le comportement est celui souhaité.

#7 Mis à jour par Benjamin Bohard il y a 7 mois

Plus précisément, le comportement décrit est déclenché dans le cadre suivant :
  • protocole local
  • from avec le nom de domaine de la machine
  • domaine de messagerie d’établissement différent du nom de domaine machine
  • pas de réécriture des en-tête (seulement enveloppe)

Le nom de l’émetteur est réécrit avec le nom de domaine de messagerie, celui-là n’est pas réécrit dans l’en-tête from

######################################################################
#                      REWRITE CONFIGURATION                         #
######################################################################

begin rewrite

# If mail is local: prefix local domain with machine name
*@ac-test.fr "${if eq {$received_protocol}{local}\
                            {$local_part@zephir.cadoles.com}\
                          fail}" Eh

####
#### All message To: root
####
root@ac-test.fr touser@ac-test.fr T
root@cadoles.com touser@ac-test.fr T

####
#### Force From: and To: envelope and Reply-To header
####
\N^([^@]+)@zephir.ac-test.fr*$\N "${if eq {$received_protocol}{local}{unkown@cadoles.com} fail}"  Fr
\N^([^@]+)@zephir.cadoles.com$\N "${if eq {$received_protocol}{local}{unkown@cadoles.com} fail}"  Fr
\N^([^@]+)@zephir.ac-test.fr$\N "${if eq {$received_protocol}{local}{touser@ac-test.fr} fail}" T
\N^([^@]+)@zephir.cadoles.com$\N "${if eq {$received_protocol}{local}{touser@ac-test.fr} fail}" T

Exemple avec send_mail('', '', 'subject', 'message')

cat /var/spool/exim4/input/1qqVx3-002LJ6-41-H
1qqVx3-002LJ6-41-H
root 0 0
<unkown@cadoles.com>
1697018185 0
-received_time_usec .124989
-received_time_complete 1697018185.128574
-ident root
-received_protocol local
-body_linecount 1
-max_received_linelength 44
-auth_id root
-auth_sender root@ac-test.fr
-allow_unqualified_recipient
-allow_unqualified_sender
-local
-tls_resumption A
XX
1
to@cadoles.com

177P Received: from root by zephir.ac-test.fr with local (Exim 4.95)
        (envelope-from <unkown@cadoles.com>)
        id 1qqVx3-002LJ6-41
        for to@cadoles.com;
        Wed, 11 Oct 2023 11:56:25 +0200
045  Content-Type: text/plain; charset="us-ascii" 
018  MIME-Version: 1.0
032  Content-Transfer-Encoding: 7bit
042  subject: =?utf-8?q?=5BZephir=5D_subject?=
025* From: bbohard@ac-test.fr
033F From: bbohard@zephir.cadoles.com
019T To: to@cadoles.com
050I Message-Id: <E1qqVx3-002LJ6-41@zephir.ac-test.fr>
034* X-rewrote-sender: root@ac-test.fr
042* X-rewrote-sender: root@zephir.cadoles.com
038  Date: Wed, 11 Oct 2023 11:56:25 +0200

et avec send_mail('', '', 'subject', 'message')

cat /var/spool/exim4/input/1qqVqu-002LAe-7w-H
1qqVqu-002LAe-7w-H
root 0 0
<unkown@cadoles.com>
1697017804 0
-received_time_usec .246036
-received_time_complete 1697017804.248816
-ident root
-received_protocol local
-body_linecount 1
-max_received_linelength 44
-auth_id root
-auth_sender root@ac-test.fr
-allow_unqualified_recipient
-allow_unqualified_sender
-local
-tls_resumption A
XX
1
to@cadoles.com

177P Received: from root by zephir.ac-test.fr with local (Exim 4.95)
        (envelope-from <unkown@cadoles.com>)
        id 1qqVqu-002LAe-7w
        for to@cadoles.com;
        Wed, 11 Oct 2023 11:50:04 +0200
045  Content-Type: text/plain; charset="us-ascii" 
018  MIME-Version: 1.0
032  Content-Transfer-Encoding: 7bit
042  subject: =?utf-8?q?=5BZephir=5D_subject?=
025F From: unkown@cadoles.com
019T To: to@cadoles.com
050I Message-Id: <E1qqVqu-002LAe-7w@zephir.ac-test.fr>
034* X-rewrote-sender: root@ac-test.fr
042* X-rewrote-sender: root@zephir.cadoles.com
038  Date: Wed, 11 Oct 2023 11:50:04 +0200

#8 Mis à jour par Benjamin Bohard il y a 7 mois

  • Statut changé de En cours à À valider
  • % réalisé changé de 0 à 100

#9 Mis à jour par Laurent Gourvenec il y a 6 mois

  • Statut changé de À valider à Résolu

#10 Mis à jour par Joël Cuissinat il y a 6 mois

  • Statut changé de Résolu à Fermé
  • Restant à faire (heures) mis à 0.0

Formats disponibles : Atom PDF