Simple Machines Community Forum

SMF Support => SMF 2.0.x Support => Topic started by: motu828 on February 05, 2017, 03:10:01 PM

Title: How to detect/delete expired user´s email?
Post by: motu828 on February 05, 2017, 03:10:01 PM
Hi,

I reactivated an old forum , with 37.000 users.
Now i want to send newsletters , but there are a lot of emails users that get me back a "mail system delivery error". After 100 errors, this causes the server to block my email account, and no more users get the newsletter.
Is there any mod/way to detect this emails automatically to delete them from the users list? . For being able to delete them before send the newsletter.

Thanks a lot!
Title: Re: How to detect/delete expired user´s email?
Post by: Kindred on February 05, 2017, 03:30:13 PM
Are you actually using SMF 2.1 beta?

However, the answer is no...  neither in 2.0.x nor in 2.1
Title: Re: How to detect/delete expired user´s email?
Post by: motu828 on February 06, 2017, 09:20:21 AM
2.0.12 + patch to 2.0.13
Title: Re: How to detect/delete expired user´s email?
Post by: woolly bugger on February 06, 2017, 11:18:39 AM
You might want to export the emails and use them in MailChip...
Title: Re: How to detect/delete expired user´s email?
Post by: Kindred on February 06, 2017, 02:29:22 PM
That is rather a manual process that somewhat defeats the purpose of the OP's point...
Title: Re: How to detect/delete expired user´s email?
Post by: woolly bugger on February 07, 2017, 10:15:43 AM
sorry, my thoughts were;

1. this would send the newsletter to all active accounts and 2. provide a list of all bad email address
Title: Re: How to detect/delete expired user´s email?
Post by: richardwbb on February 10, 2017, 04:42:18 PM
From experience I agree that dead e-mail addresses, aren't salvaged any longer by the respective owner, to re-introduce themselves to your forum.

I wouldn't trust my members e-mail addresses to any mailinglist provider [though that is an opinioned choice by me, and MailChimp is one of the better mailinglist providers], but to get a full list of e-mail addresses, this MySQL query should do it;

SELECT `smf_members`.`member_Name`, `smf_members`.`email_Address`
FROM smf_members
source; http://www.simplemachines.org/community/index.php?topic=362846.0

Now, if you are a bit in to scripting, you could write your own verification system, but with 37k of e-mails, expect some fallout.

I'm not very good with MySQL, but maybe someone can tell use to sort all members by  'last time logged in', and list their e-mail addresses. Writing your own script to e-mail them something 'proper' from 'your computer' [a domain pointing to you, or, make use of your host e-mail facillity should suffice]. By writing this reply, I made sure I will receive notification of future posts in regard to this topic. Since I seek an easy [in; doable] way to learn what percentage of members, could be dropped since chance on their return has neared zero.
Title: Re: How to detect/delete expired user´s email?
Post by: richardwbb on February 24, 2017, 06:42:43 PM
I'm aware I'm not specifically answering your question, to; detect e-mail that don't exist. However, in my previous post, I seemed to have missed on 'DESCRIBE smf_members', so;

SELECT `smf_members`.`member_Name`, `smf_members`.`email_Address`, `last_login`, FROM_UNIXTIME(last_login) FROM smf_members ORDER BY `last_login` DESC;  
will give a sorted list of last login times [and here I am aware, you didn't ask about this], however,  you might  want to start with the oldest e-mail addresses first, because those will be more likely to be expired [and finding a way to test this by telling the forum software, to run that on 37k e-mail addresses isn't the wisest thing to do]. Now you *could*, make your computer talk with the last thousand e-mail addresses, and you will learn that the way e-mail servers talk back, isn't always similar. Meaning, some e-mail addresses will respond 'mailbox is full' instantly, and, others, will say 'user not found', but, *some* will reply after a couple of days, so it just isn't wise to e-mail to 37k e-mail addresses, from a single reply address [the address you will be sending from]. For example, your e-mail box might get full, or closed down by an ISP since their way of securing things told them there is an illegal activity going on. A thousand e-mails is a safe bet.

Then, after having received *all* replies [existing e-mail addresses won't have a reply, while some will show a reply since users might take action of some sort [meaning that you just can not put all responses in a list to delete without a verfication of some sort]. Also, it can be a away message or vacation message], and, others [e-mail servers are very different I mean], will give you a plethora of responses, that mostly will be; 'away', or, 'full' [decide here what to do], or; 'it doesn't exist', [apparently you are willing to revoke those accounts]. 

Basically, you will get different responses of different e-mail addresses, there won't be a hundred percent sure [blind] way to solve your requirement, and, there must have to be found a way to to wade through all those responses, that could mean; 'existing', 'existing, but full', or, 'not found'. And expect some unexpected things, too.

That is why there isn't an easy way to do this, or it is something I also would like to learn. Possibly, someone might point us to 'bulk e-mail program', like 'Gammadyne', that *might* be able to be able to tell which e-mail addresses are told to be non existing, so that you can take action. So you might want to look in to this, since I'm not willing to investigate for software that actually is meant to spam people, and, by viewing the .mbox format, I'm seriously wondering if there is an easy way to write a script with regexp or grepping, that might be consisting of under a hundred lines, which I find doable.

Just be aware, that no matter I missed to answer your question, what I wrote here, is to be expected. Input by anyone, on how to solve this, is appreciated by me.
Title: Re: How to detect/delete expired user´s email?
Post by: Arantor on February 24, 2017, 07:12:14 PM
The first thing that could be done, and wouldn't hurt to sit and do in terms of being flagged as spam, is to go through all the emails and look up which domains they point to. Then check the domains are registered and have MX records attached (not something for the entirely faint of heart, but still well within the 100 lines suggested)

This would weed out people with domains that don't exist any more, and doesn't require sending them an email because if the domain doesn't exist, or it doesn't have an MX record that's valid, no email could possibly get there anyway.

After that, it really does come down to sending emails because the protocol has no way to say 'does this address exist and is it still valid' because that would open the field to spammers (though this was never envisaged by design in the spec, it's just a nice by-product)

One way to do it is to send a newsletter - and do it gradually so you don't get hit by spam-like behaviour penalties - and see what drops into the error log. These should be bounces which you can then remove notifications for or even remove accounts for if you wish.

Tracking bounces beyond that is doable but then you get into territory of knowing what email server is being used and how to identify when it has found a bounce, whether it's an immediate hard bounce or a delayed and/or soft bounce. This is not a task for the faint of heart and is why services like Mailgun exist to automate a lot of that away.
Title: Re: How to detect/delete expired user´s email?
Post by: richardwbb on April 04, 2017, 02:28:05 PM
Thanks for that Arantor. I missed on domain validation indeed. And for the TS, it is your topic. I won't abuse it.