Yahoo! Defers Mail from cPanel
How can fix Yahoo! Defers Mail from cPanel? All our email going to defer Event.
SMTP error from remote mail server after pipelined MAIL FROM: SIZE=2193: 421 4.7.0 [TSS04] Messages from IP temporarily deferred due to user complaints - 4.16.55.1; see https://help.yahoo.com/kb/postmaster/SLN3434.html-
Your messages are being deferred due to the following: Messages from IP temporarily deferred due to user complaints - 4.16.55.1;
They provide you Error: "421 4.7.0 [XXX] Messages from x.x.x.x temporarily deferred due to user complaints - 4.16.55.1" when sending email to Yahoo | Postmaster Help - SLN3434 which includes steps to resolve the issue. In conjunction with following their suggestions you should also ensure that you have a valid PTR, DKIM and SPF on domains that send mail0 -
In conjunction with following their suggestions you should also ensure that you have a valid PTR, DKIM and SPF on domains that send mail
We have made all guide but we have still problem send email to @yahoo.com domain. All are other email domain (@gmail.com) sending are working without any issue. We have Valid DKIM, SPF, Reverse DNS (PTR) Record but still does not know that why Yahoo! Defers Mail from cPanel.Unfortunately as far as I know the cPanel GUI does not have a way to add the needed lines to the exim.conf.
Yes, cPanel should add support this. Also found one more here but does not understanding how can do this.0 -
Too you can install DMARC, this helped me some months ago.
Yes, DMARC is useful in making sure your emails pass multiple validations. Problem is the deferrals have nothing to do with validation and everything to do with how often the emails are sent. As I've described Yahoo imposes strict rules that other servers do not. It's also worth mentioning that the user complaints part of "temporarily deferred due to user complaints" is completely untrue since it's an automatic deferral that has nothing to do with their deferrals. If Yahoo's users complain by marking your emails as spam, then your more likely to get straight up blocked then deferred in my experience. Another feature you can use to monitor if emails received by yahoo are getting marked as spam is to use their Complaint Feedback Loop to add your domains.0 -
Unfortunately as far as I know the cPanel GUI does not have a way to add the needed lines to the exim.conf.
Try making these modification to the file - [font="courier new">/usr/local/cpanel/etc/exim/replacecf/dkim/remote_smtp No way of doing this from the WHM GUI, but might be beneficial to advanced users. Then rebuild the exim configuration [font="courier new">/scripts/buildeximconf I'm not going to guarantee that this will work, or that it will remain there through subsequent cPanel and Exim updates, but was just a thought.0 -
Try making these modification to the file - /usr/local/cpanel/etc/exim/replacecf/dkim/remote_smtp
Thanks for that. This is promising. It provides more permanence in that it survives saving new settings in WHM Exim configuration plus it should survive UPCP as well. From what I've read, it only gets touched / replaced if a future cpanel update needs to modify it, so changes could be lost then, but otherwise it should survive. So perhaps I can replace my exim.conf replacement hook with a script that runs diff on a copy compared to the remote_smtp file and alerts me when it changes or set up a cron to do the same. Although a script that can modify the existing file to add missing lines would still be best. I know it's possible just haven't dug into figuring that out. Although one would think, seeing that it's already an isolated file, that cpanel could easily add a text area for inserting lines in the advanced config.0 -
Ok, so I have a whole new improved method. The following will use a script triggered by the post hooks to check "/usr/local/cpanel/etc/exim/replacecf/dkim/remote_smtp" and add custom lines to it if they do not exist. It will not modify existing custom lines so if new parameters are added, they'll will need to be manually implemented. However as long as you update your new "exim_custom_remote_smtp.conf" file with the same changes, they will be re-added in the future if an update removes them. That's the primary point of this is to make the changes persist through updates. In your /etc/ folder create a file called: exim_custom_remote_smtp.conf Add the following lines to it (you can insert additional lines if there's other parameters you want added: #remote_smtp_insert_start connection_max_messages = 20 #remote_smtp_insert_end
Also in /etc/ crearte a file called: exim_custom_remote_smtp.sh Set the permissions to be executable. Add the following code to it: [CODE=bash] #!/bin/sh #This script will check your existing REMOTE_SMTP file and add your custom line if they do not already exist. #This script is not meant to modify existing custom lines, only add them. #if you add new lines to your CUSTOM_LINES file afer they already exist in your REMOTE_SMTP file, then you will need to manually add them there as well the first time #set the file path for the file that contains just your custom lines CUSTOM_LINES="/etc/exim_custom_remote_smtp.conf" #set the file path for the file being modified /usr/local/cpanel/etc/exim/replacecf/dkim/remote_smtp #you can copy this path to a test file such as /etc/exim_custom_remote_smtp_test and set it here REMOTE_SMTP="/usr/local/cpanel/etc/exim/replacecf/dkim/remote_smtp" #check if CUSTOM_LINES file exists or is empty. if [ -s $CUSTOM_LINES ]; then #check if REMOTE_SMTP file exists or is empty. if [ -s $REMOTE_SMTP ]; then echo "Checking if remote_smtp needs custom lines added" #check if any of the lines already exist and if they do not add them and rebuild exim CUSTOM_LINES_EXIST="$(grep -f $CUSTOM_LINES $REMOTE_SMTP)" if [ -z "$CUSTOM_LINES_EXIST" ]; then sed -i '/driver = smtp/a \\' $REMOTE_SMTP; sed -i "/driver = smtp/r $CUSTOM_LINES" $REMOTE_SMTP echo "Custom lines were added for remote_smtp" /scripts/buildeximconf fi else echo "$REMOTE_SMTP NOT FOUND OR EMPTY" fi else echo "$CUSTOM_LINES NOT FOUND OR EMPTY" fi
Go to /scripts/ and edit or create the following 2 files: posteximup postupcp I've added the following to these files so they run whenever cpanel or exim updates and if the remote_smtp file was modified removing the custom lines, they should get added back in without concern for any exim.conf version and other changes, including manual changes within WHM Exim Configuration./bin/sh /etc/exim_custom_remote_smtp.sh
If everything is setup correctly, you can run "/scripts/postupcp" to test. You should run it at least once to add the lines for you to the remote_smtp file and to make sure everything is set correctly. If it's the first time adding the lines, You'll get output stating: Checking if remote_smtp needs custom lines added Custom lines were added for remote_smtp (and then standard output triggered by Exim rebuilding) If the lines already exist and you run postupcp again it will only output: Checking if remote_smtp needs custom lines added Comments in the script explain how to customize if you prefer to test with another file first. I've tested it on my system. So, this should work much better than replacing the exim.conf as I was doing before and should persist as best as I can foresee now.0 -
Ok, so I have a whole new improved method.
Try making these modification to the file - /usr/local/cpanel/etc/exim/replacecf/dkim/remote_smtp
kdean and sparek-3: Replying to tell you thank you for posting this info; had been working on a way to accomplish this and your posts headed me in the right direction. Thank you!0 -
Glad I could help. My method has worked great since I implemented it and I no longer get any Yahoo deferred delays in my mail queue. 0 -
Hi kdean, I modified your script slightly; here is what I ended up with. Namely I changed the grep command from -f to -xf, -f was not working for me in all scenarios. And I changed the echo messages. And on the queue_smtp_domains = yahoo.com : ymail.com : rocketmail.com : aol.com : gmail.com : outlook.com : msn.com : hotmail.com : live.com
I changed it to all domainsqueue_smtp_domains = *
as I don't want to keep updating the list when other email providers change their policies; and it makes mail flow better with less connections to all domains. Thanks again! [CODE=bash]#!/bin/sh #This script will check your existing REMOTE_SMTP file and add your custom line if they do not already exist. #This script is not meant to modify existing custom lines, only add them. #if you add new lines to your CUSTOM_LINES file afer they already exist in your REMOTE_SMTP file, then you will need to manually add them there as well the first time #set the file path for the file that contains just your custom lines CUSTOM_LINES="/etc/exim_custom_remote_smtp.conf" #set the file path for the file being modified /usr/local/cpanel/etc/exim/replacecf/dkim/remote_smtp #you can copy this path to a test file such as /etc/exim_custom_remote_smtp_test and set it here REMOTE_SMTP="/usr/local/cpanel/etc/exim/replacecf/dkim/remote_smtp" #check if CUSTOM_LINES file exists or is empty. if [ -s $CUSTOM_LINES ]; then #check if REMOTE_SMTP file exists or is empty. if [ -s $REMOTE_SMTP ]; then #check if any of the lines already exist and if they do not add them and rebuild exim CUSTOM_LINES_EXIST="$(grep -xf $CUSTOM_LINES $REMOTE_SMTP)" if [ -z "$CUSTOM_LINES_EXIST" ]; then sed -i '/driver = smtp/a \\' $REMOTE_SMTP; sed -i "/driver = smtp/r $CUSTOM_LINES" $REMOTE_SMTP /scripts/buildeximconf echo "Custom lines were added" else echo "Custom lines already exist" fi else echo "$REMOTE_SMTP NOT FOUND OR EMPTY" fi else echo "$CUSTOM_LINES NOT FOUND OR EMPTY" fi0
Please sign in to leave a comment.
Comments
11 comments