2010-03-26 6 views
0

On m'a donc demandé d'aider à maintenir un site Web qui utilise Ruby on Rails. Maintenant, laissez-moi juste dire que j'ai programmé Ruby pendant un certain temps mais je suis encore nouveau sur Rails. Le premier problème qui a été porté à mon attention est la façon dont le courriel d'activation met environ six heures à arriver. Ce serait une chose si l'email n'était pas envoyé en raison d'erreurs mais il est envoyé correctement, juste lent. Le serveur sur lequel il s'exécute est également son propre SMTP. J'ai vérifié comment l'email était formaté avant d'appeler la méthode setup_email et tout a l'air correct. J'ai même creusé dans la librairie ActionMailer et lu les fichiers là-bas et je n'ai rien vu d'anormal. Alors, qu'est-ce qui cause le plus le courrier électronique à prendre six heures?Le courriel envoyé par ActionMailer prend six heures pour livrer le courrier

Editer: J'ai essayé l'idée de Roadmaster et j'ai remarqué quelque chose d'étrange. Alors que l'envoi normal de courrier électronique semble avoir des retards normaux tels que enregistrés dans les journaux (par exemple "delay = 0.99, delays = 0.08/0.01/0.19/0.7"), j'ai remarqué plusieurs tentatives d'envoi d'e-mails à [email protected] . Tout cela étant différent car il ne peut pas trouver un tel hôte. Mais les retards qui leur sont associés sont beaucoup plus importants (ex: "delay = 239853, delays = 239818/0.02/35/0"). Maintenant, cela ressemble plus à un problème dans le code Rails quelque part qu'à un problème de configuration de sendmail, mais j'ai juste commencé à maintenir ce site. Où serait un endroit probable pour commencer à regarder?

+0

Regardez les en-têtes Received dans le message. Ils vous diront où est le retard. –

Répondre

1

Pouvez-vous accéder aux journaux de messagerie du serveur? ils peuvent être dans/var/log s'il s'agit d'un serveur Unix. Vous pourriez trouver un indice quant à ce qui se passe. Voici ce que je ferais:

  1. trouver le journal du serveur SMTP (sendmail, exim, postfix, peu importe).
  2. Utilisez tail -f whatever.log pour garder un œil sur le journal. Laisse ceci fonctionner dans un terminal.
  3. Accédez à votre application et suivez les étapes nécessaires pour déclencher l'envoi d'un e-mail d'activation.
  4. Cochez la fenêtre dans laquelle vous regardez le journal pour voir ce qui se passe.

ActionMailer en tant que tel ne devrait pas introduire un gros retard (bien que ce n'est pas démon de la vitesse en livrant le courrier, il doit encore gérer tout en moins de 1-2 secondes), il est peut-être une autre une partie de votre pile, ou même un problème/filtre/greylist sur la fin du destinataire.

+0

Merci beaucoup! J'ai essayé et j'ai trouvé le problème. J'ai édité la question pour refléter cela. Des idées maintenant sur la résolution du problème? –