web-dev-qa-db-fra.com

Les messages en file d'attente peuvent-ils être déplacés entre les serveurs Postfix?

Mon scénario est que je dispose d’une machine à connexion aérienne pour la signature des clés. On m'a donné du code qui génère des courriels pour que les personnes puissent recevoir leurs clés signées, mais je voudrais garder cette machine à l'écart de tout réseau. J'ai configuré Postfix sur cette machine pour mettre tous les courriers électroniques en attente. Maintenant, j'essaie de trouver un moyen d'injecter ces courriels sur mon serveur en réseau avec Postfix correctement configuré pour livrer le courrier. J'ai essayé de déplacer le courrier électronique dans le répertoire de stockage et de le mettre en file d'attente avec Sudo postsuper -r ALL. Il dit que les messages ont été mis en file d'attente, mais ils ne sont jamais livrés. Quelqu'un a-t-il réussi à le faire?

4
Matthew Borger

Si quelqu'un d'autre avait ce problème, j'ai finalement atteint mon objectif en utilisant postcat pour vider tous les courriels en file d'attente dans des fichiers séparés, les copier sur le nouveau serveur et les injecter dans Postfix à l'aide de sendmail -t. L'indicateur -t indique à sendmail d'utiliser les en-têtes du fichier au lieu de spécifier l'expéditeur et le destinataire comme arguments de ligne de commande.

2
Matthew Borger

J'ai pu accomplir tout cela avec une seule commande et envoyer le message directement à un autre serveur via ssh. J'ai également modifié le champ From, en le réglant sur celui de msg_id_in_queue (extrait de variables d'environnement, sinon):

postcat -bhq <msg_id_in_queue> | ssh user@server2 "sendmail -t -f [email protected]"

Cela pourrait être amélioré en utilisant regex pour extraire le champ From directement à partir du message d'origine, en plus de supprimer le msg_id_in_queue par la suite, mais pour l'utilisation dont j'avais besoin, cela suffisait.

2
past12

J'ai eu un serveur mort qui avait encore des mails dans /var/spool/postfix/{maildrop,defer,deferred}/. Je pouvais simplement copier les fichiers aux bons endroits sur un serveur en fonctionnement. C'est ainsi:

  • Déplacez le disque contenant/var du serveur mort vers le serveur actif et montez-le. Dans cet exemple,/var était une partition séparée et elle a été montée à /mnt/old_var/

  • Définissez les autorisations correctes sur les fichiers (dans le cas où les UID sont différents):

chown -R postfixe: postdrop /mnt/old_var/spool/postfix/maildrop
chown -R postfixe: postfix/mnt/old_var/spool/postfix/defer *
  • Déplacer des fichiers maildrop

mv /mnt/old_var/spool/postfix/maildrop/* /var/spool/postfix/maildrop/

  • Déplacer les fichiers différés
cd /mnt/old_var/spool/postfix/
find defer -type f -printf "% P\n"\
 | en lisant f; faire 
 pour d en différé différé; faire 
 mv -v $ d/$ f /var/spool/postfix/$d/$f
 done 
 done

ou la même dernière commande en tant que ligne unique:

cd /mnt/old_var/spool/postfix/; find defer -type f -printf "%P\n" | while read f; do for d in defer deferred; do mv -v $d/$f /var/spool/postfix/$d/$f; done; done
0
mivk