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?
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.
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.
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 *
mv /mnt/old_var/spool/postfix/maildrop/* /var/spool/postfix/maildrop/
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