There are some servers using 450 error code for greylisting:

Resolving host name "xxxx"...
Connecting to host address "xxxx"...
Connected.
S 220 xxxx ESMTP Postfix
C HELO xxxx
S 250 xxxx
C MAIL FROM:
S 250 Ok
C RCPT TO:
S 450 : Recipient address rejected: Greylisted, see http://isg.ee.ethz.ch/tools/postgrey/help/xxxx.html
This host states that the address is undetermined.
Disconnected.

I think this one is using postfix with postgrey.. It would be better to match "Greylist", not the code itself.

Comments

StevenPatz’s picture

Title: 450 - greilisted » 450 - greylisted
jozef.benicky’s picture

this is in the source code:

// Any 4xx error also means we couldn't really check^
// except 450, which is explcitely a non-existing mailbox:^
// 450 = "Requested mail action not taken: mailbox unavailable"^
ereg("^4", $to) && !ereg("^450", $to)) {^

but this isn't right, it should be like this:
450 Requested mail action not taken: mailbox unavailable (e.g., mailbox busy)
550 Requested action not taken: mailbox unavailable (e.g., mailbox not found, no access, or command rejected for policy reasons)

Rainman’s picture

I did a quick google on the SMTP codes, here is a handy reference:

http://email.about.com/cs/standards/a/smtp_error_code_2.htm

(from the first page of that link) the first number: 4: The server has encountered a temporary failure. If the command is repeated without any change, it might be completed. Mail servers can use such temporary failures to keep untrusted senders at bay.
5: The server has encountered an error.

So actually both 450 and 550 are valid codes, the difference is that 450 is "temporary". I would say it is probably safe overall to allow 450 codes, especially since the known greylisting issue. although I still like the idea of checking for the "greylist" keyword along with 450 to be sure that was the issue.

Ahh. had to read again what was posted, that appears correct. basically if the server is inviting you to try again later, well email verify should take that as a good response. ok now I am in favor of just removing that whole 450 part.

tobias’s picture

Hi Rainman - I just was facing this issue myself with a user on my site. What do you recommend I change in the module - or has this been fixed in a dev version?

Thanks,

Tobias

Rainman’s picture

Wow, thanks for reminding me, I had made a change and forgot to document.. appearently it works because I haven't thought of it since :)

Here is what I did, in email_verify.inc.php changed line 96 to remove the 450 code part

96c96

<       ereg("^4", $to) && !ereg("^450", $to)) {

--- changed to

>       ereg("^4", $to)) {

Not saying this is necessarily correct, just what I did which resolved the issue for me.

tobias’s picture

thanks rainman! I'l try this out.

-T

Victor Safronov’s picture

Got the same. The entry in watchdog:
Rejected email address: xxx@xxx.xxx.ru. Reason: 450 4.7.1 : Recipient address rejected: Greylisted for 60 second

Victor Safronov’s picture

Priority: Normal » Critical
yonailo’s picture

+1 subscribing.

oadaeh’s picture

Issue summary: View changes
Status: Active » Closed (won't fix)

Due to Drupal 6's EOL, I am closing this with "won't fix." If you feel this is still valid for any of the 7.x branches, feel free to re-open and update this issue.