Resource icon

Amazon SES Bounces Support 2021-03-19

No permission to download
yes and no... I (and at least one other) found that we actually had to use our site sender identity sender email instead of the domain identity before it would recognize the bounces. :unsure:

yes, I wrote this in my manual. But I was talking about the bounce email address in XF/ACP. You delete it and deactivate it if you use this addon with SNS.

You do not use bounce email addresses when you use SNS. It is either or, but never both.
 
Pretty sure that's already evident with the setup instructions.. but until you get Amazon SES actually activated for your site.. this add-on is useless. 🙈
And it appears that many have issues with getting the core Amazon SES ability set up even before they start thinking about bounce/unsubscribe. ;)
And this comes from someone who battled with it for awhile.. and is not a neophyte in server setup aspects.
 
There are many different mailing list options out there. They all have the same problem: You need to sync somehow the bounces of these mailing software with the XF user database. That is always the bottle neck. Is there a bridge for Listmonk or Mailwizz for XF available?

There is a XF-Sendy bridge from @truonglv, but I had no time yet to test it enough (my forums are setup on the server differently and this is making Sendy a little bit more complicated). Because Sendy itself is a low one time payment and is working with Amazon SES, this would be a very cheap option.

Hmm, I guess you're using that to send out newsletters to all forum members? I assumed something like that would be integrated into Xenforo. I guess a main benefit of that addon would be not having to export forum members' emails, then import them into your newsletter program.
 
Much appreciated! I've been search and reading for hours trying to find clear & full instructions for how to set up SES with Xenforo. Your guide probably deserves its own thread titled "step-by-step guide for setting up SES with Xenforo".

The addon developer @JulianD can stick it somewhere in this thread if he wants to.
 
@Tracy Perry @MaximilianKohler

We should not continue this newsletter discussion in this thread. This would not be fair. This thread shall be only about this Amazon SNS/SES bounces addon, nothing else. We can discus various newlsletter options or general Amazon SES problems in other threads.
In the long run.. sending newsletters via transactional email is directly related to Amazon SES.. and ultimately the ability to successfully deliver such and the ability to "block" crap emails falls back to this add-on. So, they are basically intertwined.
Does this add-on currently work.. yep, but due to certain responses from service providers... a return that using an actual email account would return a HARD bounce.. this add-on returns a "soft" bounce.
As an example.. the listed "hard bounces" were using a dedicated IMAP account... all the rest were using this add-on.


Screen Shot 2023-07-02 at 9.00.55 AM.webp
 
We should not continue this newsletter discussion in this thread. This would not be fair. This thread shall be only about this Amazon SNS/SES bounces addon, nothing else. We can discus various newlsletter options or general Amazon SES problems in other threads.
Yes, and per my previous suggestion, it would be good if people were able to easily find your guide without wading through 6 pages (and a dozen other threads). Do you want to create a new topic per my suggestion:
Your guide probably deserves its own thread titled "step-by-step guide for setting up SES with Xenforo".
If not, I'll do it :)
 
It's very easy to create a resource... the major issue is his "potential" resource misses the majority of actually setting up the SES server to use this add-on.
 
Does this add-on currently work.. yep, but due to certain responses from service providers... a return that using an actual email account would return a HARD bounce.. this add-on returns a "soft" bounce.

I do not understand your point. Could you please post the bounce log for one hard bounce and one of your softbounces?
 
I do not understand your point. Could you please post the bounce log for one hard bounce and one of your softbounces?
Non-Existent hotmail address via valid imap email address which resulted in an immediate hard bounce (and which XF was set to monitor)

Code:
Delivered-To: bounced+a7fb90e2+astroblurb222=hotmail.com@astrowhat.com
Received-SPF: none (zohomail.com: 54.240.14.81 is neither permitted nor denied by domain of @) client-ip=54.240.14.81; envelope-from=@; helo=a14-81.smtp-out.amazonses.com;
Authentication-Results: mx.zohomail.com;
    dkim=pass;
    spf=none (zohomail.com: 54.240.14.81 is neither permitted nor denied by domain of @)  smtp.mailfrom=@;
    dmarc=pass(p=quarantine dis=none)  header.from=amazonses.com
ARC-Seal: i=1; a=rsa-sha256; t=1687175464; cv=none;
    d=zohomail.com; s=zohoarc;
    b=fKl6DXJw4q4hMrJjrj0KLSSRBsjIRpe9Tj8YeJgG8gUf4rwfpEv1iyhOihUz1ACZDa0QH9ZlO6Jam8G91mjRp2GTAJgveVqf1+dcOB/AMwLDY+sTSSZVbg9J4+rM8XvQEs7FnaSUH2PaRKpnezJbQqCihM/7BQyOVhepxONzSGo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc;
    t=1687175464; h=Content-Type:Date:From:MIME-Version:Message-ID:Subject:To;
    bh=/CUqJ7/XIf/2WAPmU90m0pvyocOY9bQKOTAx3/fjwEQ=;
    b=i0fuTaWj4yJDeZrFjaAuNUlI/f9ARSnm2yxSfjWelgQPggaH1cJX6tswGijcGbvE0yPKkZeVjRM5hFSNf1XGl3a+SjAjqVyoMCiNHU0sDmRblCrRnyAdSUAn5gyRt5HRh1AxMsdw5+f6jub5FpOiRIE7CPyrnGzpmFlN9ns8akw=
ARC-Authentication-Results: i=1; mx.zohomail.com;
    dkim=pass;
    spf=none (zohomail.com: 54.240.14.81 is neither permitted nor denied by domain of @)  smtp.mailfrom=@;
    dmarc=pass header.from=<MAILER-DAEMON@amazonses.com> (p=quarantine dis=none)
Received: from a14-81.smtp-out.amazonses.com (a14-81.smtp-out.amazonses.com [54.240.14.81]) by mx.zohomail.com
    with SMTPS id 1687175464666913.6480010577598; Mon, 19 Jun 2023 04:51:04 -0700 (PDT)
Return-Path: <>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;
    s=224i4yxa5dv7c2xz3womw6peuasteono; d=amazonses.com; t=1687175463;
    h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type:Feedback-ID;
    bh=AuywTnQlN679o6Nbh/oJe1Pq34AtGosp+1pbJPb/CmI=;
    b=a5/WSYfFWaEBVECR7WN7Ga58VnuBwTOLBv6Q3eeDFIXo50ym2virbZQwOaoWTmhw
    kE7vIWy1sYquBMLmCl+VxANGNdu+HrzRIWu9O9tT6UHEwJ1zTAOqyijsvtkQv/95DOF
    8kQiTjBwjxuYgRW1XqDr7FGdRJD0tIwhjpFtwKno=
Date: Mon, 19 Jun 2023 11:51:03 +0000
From: MAILER-DAEMON@amazonses.com
To: bounced+a7fb90e2+astroblurb222=hotmail.com@astrowhat.com
Message-ID: <01000188d37e81c8-6360a5af-fc82-4902-bf07-d3f9ea568377-000000@email.amazonses.com>
Subject: Delivery Status Notification (Failure)
MIME-Version: 1.0
Content-Type: multipart/report;
    boundary="----=_Part_7415303_1325013977.1687175463389";
    report-type=delivery-status
Feedback-ID: 1.us-east-1.TlhY4zD3LhhlB9u6fK5oKZM0scwGjehgO0VCslVe1h8=:AmazonSES
X-SES-Outgoing: 2023.06.19-54.240.14.81
X-ZohoMail-DKIM: pass (identity @amazonses.com)
X-ZM-MESSAGEID: 1687175465197100001

------=_Part_7415303_1325013977.1687175463389
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Description: Notification

An error occurred while trying to deliver the mail to the following recipients:
astroblurb222@hotmail.com
------=_Part_7415303_1325013977.1687175463389
Content-Type: message/delivery-status
Content-Transfer-Encoding: 7bit
Content-Description: Delivery Status Notification

Reporting-MTA: dns; a8-56.smtp-out.amazonses.com

Action: failed
Final-Recipient: rfc822; astroblurb222@hotmail.com
Diagnostic-Code: smtp; 550 5.5.0 Requested action not taken: mailbox unavailable (S2017062302). [VE1EUR01FT087.eop-EUR01.prod.protection.outlook.com 2023-06-19T11:51:03.167Z 08DB6FBF6D0D2BCB]
Status: 5.5.0


------=_Part_7415303_1325013977.1687175463389
Content-Type: message/rfc822
Content-Description: Undelivered Message

Message-ID: <01000188d37e7bb4-4150ff85-fa3d-493b-9061-2e2fd2680ce6-000000@email.amazonses.com>
Date: Mon, 19 Jun 2023 11:51:01 +0000
Subject: Test convo - New reply to your conversation
From: Astro What? Forum <no_reply@astrowhat.com>
To: Astro_Blurb <astroblurb222@hotmail.com>
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary="_=_swift_1687175457_113ad56f27c2f56ab2b266290b302b58_=_"
X-To-Validate: a7fb90e2+astroblurb222@hotmail.com
Feedback-ID: 1.us-east-1.SRHWcYo6tQMBAO29g2FJLGtf+S0BVw/I5N/r97Ze4S4=:AmazonSES
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;
    s=224i4yxa5dv7c2xz3womw6peuasteono; d=amazonses.com; t=1687175462;
    h=Message-ID:Date:Subject:From:To:MIME-Version:Content-Type:Feedback-ID;
    bh=/jqQ/vuhvHdFF5+S6fODz5abLWuqPdSq1gY7n1x3RjA=;
    b=inx6MW3nsrtDVHoqzhhXf4ClCuoX8E/mQEH630ZgaJo2zv+nmq0jvQdpsITdtJlA
    VlKePtpssqpBtqc7AsjdyyKt//OuCZ87yfW5Km0qKJlaj5KTxAIp/8tyROBI8PI0pwc
    Xfrzwo1Ik/iIxWfE9Q/ObKZDNNIFMugxtN1hhFcw=
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;
    s=qe4qy6r6ezhrlex2p4kgvaudesdixpdp; d=astrowhat.com; t=1687175462;
    h=Message-ID:Date:Subject:From:To:MIME-Version:Content-Type;
    bh=/jqQ/vuhvHdFF5+S6fODz5abLWuqPdSq1gY7n1x3RjA=;
    b=B4Ytcmo2a8vwfz6wqPBVUujL4QhhsDwk6dNcXK9b/NUIwwECGqgJ2vtg7mqC0p8B
    PbqKAp0mdYA8Hd7qh1DZ6hJcgHLehN/8zns+cmtCEx79Y/naBFYXJA93Cj9DPntg/Fp
    GVNqk8Q2Q+roAAeW8c8bhwQzomZdN+d4dBlaSaojK0amaiq+bco8lWbmb/r9JJpyfJh
    VWHX0l0XL/r13nCh1ktgV5oTOqkLGDxscgUQpS+/85DxKeUgarjOCDffIuRO2NgXQxZ
    5vPwV82l68QC25VAZanhnx4j/hie4q9QRHI1Skl0KPIBWRmsWsTpMmLwSmK83NAjUoY
    Ip2w79PeDQ==


--_=_swift_1687175457_113ad56f27c2f56ab2b266290b302b58_=_
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Tracy (https://astrowhat.com/members/tracy.2/) replied to your conversation=
 at Astro What? (https://astrowhat.com/).

****** Test convo (https://a=
strowhat.com/conversations/test-convo.24/unread) ******

View this conv=
ersation (https://astrowhat.com/conversations/test-convo.24/unread) - View =
all your conversations (https://astrowhat.com/conversations/)

Please d=
o not reply to this message. You must visit the forum to reply.

This m=
essage was sent to you because your preferences are set to receive email wh=
en a new conversation message is received. Stop receiving these emails (htt=
ps://astrowhat.com/email-stop/645/conversation?c=3D74626e1e98f03bcc9c1ba347=
e8313d9e).

-----------------------------

Visit Astro What?: https=
://astrowhat.com/

--_=_swift_1687175457_113ad56f27c2f56ab2b266290b302b58_=_
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html>
<html lang=3D"en-US" dir=3D"LTR">
<head>
=09<meta htt=
p-equiv=3D"Content-Type" content=3D"text/html; charset=3Dutf-8">
=09<base=
 href=3D"https://astrowhat.com/">
=09<meta name=3D"viewport" content=3D"w=
idth=3Ddevice-width, initial-scale=3D1">
=09<meta http-equiv=3D"X-UA-Comp=
atible" content=3D"IE=3Dedge">
=09<meta name=3D"format-detection" content=
=3D"telephone=3Dno">
=09<title>Test convo - New reply to your conversatio=
n</title>
</head>
<body dir=3D"LTR" leftmargin=3D"0" topmargin=3D"0" ma=
rginwidth=3D"0" marginheight=3D"0" style=3D"margin: 0; padding: 0; word-wra=
p: break-word; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; =
background-color: #131313; font-size: 15px; font-family: 'Poppins','Segoe U=
I','Helvetica Neue',Helvetica,Roboto,Oxygen,Ubuntu,Cantarell,'Fira Sans','D=
roid Sans',sans-serif; line-height: 1.6; color: #7a8091;">

<table id=
=3D"bodyTable" border=3D"0" width=3D"100%" height=3D"100%" cellpadding=3D"0=
" cellspacing=3D"0" style=3D"border-spacing: 0; mso-table-lspace: 0pt; mso-=
table-rspace: 0pt; border-collapse: collapse; margin: 0; padding: 0; backgr=
ound-color: #131313; height: 100%; width: 100%;">
<tr>
=09<td align=3D"=
center" valign=3D"top" id=3D"bodyTableContainer" style=3D"border-collapse: =
collapse; background-color: #131313;">
=09=09<table border=3D"0" width=3D=
"600" cellpadding=3D"0" cellspacing=3D"0" class=3D"container" dir=3D"LTR" s=
tyle=3D"border-spacing: 0; mso-table-lspace: 0pt; mso-table-rspace: 0pt; bo=
rder-collapse: collapse; width: 100%; max-width: 600px; table-layout: fixed=
;">
=09=09<tr>
=09=09=09<td class=3D"header" align=3D"center" valign=3D=
"top" style=3D"border-collapse: collapse; color: #6b83a9; padding: 8px 10px=
; border-top-left-radius: 4px; border-top-right-radius: 4px; font-family: '=
Poppins','Segoe UI','Helvetica Neue',Helvetica,Roboto,Oxygen,Ubuntu,Cantare=
ll,'Fira Sans','Droid Sans',sans-serif; font-size: 22px; line-height: 1.6;"=
>
=09=09=09=09<a href=3D"https://astrowhat.com/?utm_source=3Demail&utm_me=
dium=3Demail" style=3D"text-decoration: none; color: #6b83a9;">Astro What?<=
/a>
=09=09=09</td>
=09=09</tr>
=09=09<tr>
=09=09=09<td class=3D"con=
tent" align=3D"left" valign=3D"top" style=3D"border-collapse: collapse; bac=
kground-color: #101722; border-radius: 2px; color: #7a8091; padding: 10px; =
font-size: 15px; font-family: 'Poppins','Segoe UI','Helvetica Neue',Helveti=
ca,Roboto,Oxygen,Ubuntu,Cantarell,'Fira Sans','Droid Sans',sans-serif; line=
-height: 1.6;">

<p style=3D"margin-top: 0;"><a href=3D"https://astrowh=
at.com/members/tracy.2/?utm_source=3Demail&utm_medium=3Demail" style=3D"col=
or: #a5aab9; text-decoration: none;">Tracy</a> replied to your conversation=
 at <a href=3D"https://astrowhat.com/?utm_source=3Demail&utm_medium=3Demail=
" style=3D"color: #a5aab9; text-decoration: none;">Astro What?</a>.</p>
=

<h2 style=3D"font-size: 22px; font-weight: normal; margin: 10px 0; paddi=
ng: 0;"><a href=3D"https://astrowhat.com/conversations/test-convo.24/unread=
?utm_source=3Demail&utm_medium=3Demail" style=3D"color: #a5aab9; text-decor=
ation: none;">Test convo</a></h2>



<table cellpadding=3D"10" cell=
spacing=3D"0" border=3D"0" width=3D"100%" class=3D"linkBar" style=3D"border=
-spacing: 0; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse:=
 collapse; padding: 8px; background-color: #131c29; border-top: 1px solid #=
242d38;">
<tr>
=09<td style=3D"border-collapse: collapse;">
=09=09<a =
href=3D"https://astrowhat.com/conversations/test-convo.24/unread?utm_source=
=3Demail&utm_medium=3Demail" class=3D"button" style=3D"display: inline-bloc=
k; padding: 5px 10px; background-color: #28354a; border: none; border-radiu=
s: 4px; font-size: 13px; color: #fff; text-decoration: none; white-space: n=
owrap;">View this conversation</a>
=09</td>
=09<td align=3D"right" styl=
e=3D"border-collapse: collapse;">
=09=09<a href=3D"https://astrowhat.com/=
conversations/?utm_source=3Demail&utm_medium=3Demail" class=3D"buttonFake" =
style=3D"color: #a5aab9; text-decoration: none; display: inline-block; padd=
ing: 5px 10px; font-size: 13px;">View all your conversations</a>
=09</td>=

</tr>
</table>


=09<p class=3D"minorText" style=3D"font-size: 1=
3px; color: #6d7384;">Please do not reply to this message. You must visit t=
he forum to reply.</p>

<p class=3D"minorText" style=3D"font-size: 13px=
; color: #6d7384; margin-bottom: 0;">This message was sent to you because y=
our preferences are set to receive email when a new conversation message is=
 received. <a href=3D"https://astrowhat.com/email-stop/645/conversation?c=
=3D74626e1e98f03bcc9c1ba347e8313d9e&utm_source=3Demail&utm_medium=3Demail" =
style=3D"color: #6d7384; text-decoration: underline;">Stop receiving these =
emails</a>.</p>

=09=09=09</td>
=09=09</tr>
=09=09<tr>
=09=09=09<=
td class=3D"footer" align=3D"center" valign=3D"top" style=3D"border-collaps=
e: collapse; padding: 8px 10px; text-align: center; color: #6d7384; font-si=
ze: 13px; font-family: 'Poppins','Segoe UI','Helvetica Neue',Helvetica,Robo=
to,Oxygen,Ubuntu,Cantarell,'Fira Sans','Droid Sans',sans-serif; line-height=
: 1.6;">
=09=09=09=09<div><a href=3D"https://astrowhat.com/?utm_source=3D=
email&utm_medium=3Demail" style=3D"color: #6d7384; text-decoration: underli=
ne;">Visit Astro What?</a></div>

=09=09=09=09
=09=09=09</td>
=09=
=09</tr>
=09=09</table>
=09</td>
</tr>
</table>

<img src=3D"ht=
tps://astrowhat.com/b/image.gif?p=3DBPtJT4P8pTgWEpdtfEMb4I37%2FZdb%2BqC2Pz0=
UI5lO6C4UGmVdWC0%2FkiEMvp4JGkZMV8ANr0QLjVjE6HUGKAqYddeBjwQpQznWcSI3ayBd5qS6=
zMzvkalK" width=3D"0" height=3D"0" style=3D"border:0;width:0;height:0;"></b=
ody>
</html>

--_=_swift_1687175457_113ad56f27c2f56ab2b266290b302b58_=_--


------=_Part_7415303_1325013977.1687175463389--


Non existent email address (hotmail) using the add-on:
Code:
{"notificationType":"Bounce","bounce":{"feedbackId":"01000188d5a5a89a-5f620cd0-01e1-4944-af8f-c938c7631865-000000","bounceType":"Permanent","bounceSubType":"General","bouncedRecipients":[{"emailAddress":"astroblurb262@hotmail.com","action":"failed","status":"5.5.0","diagnosticCode":"smtp; 550 5.5.0 Requested action not taken: mailbox unavailable (S2017062302). [VI1EUR05FT019.eop-eur05.prod.protection.outlook.com 2023-06-19T21:53:03.456Z 08DB70C9F9DB7F8C]"}],"timestamp":"2023-06-19T21:53:03.000Z","remoteMtaIp":"104.47.17.161","reportingMTA":"dns; a8-13.smtp-out.amazonses.com"},"mail":{"timestamp":"2023-06-19T21:53:02.258Z","source":"no_reply+02c427f4+astroblurb262=hotmail.com@astrowhat.com","sourceArn":"arn:aws:ses:us-east-1:521475062258:identity/no_reply@astrowhat.com","sourceIp":"5.161.56.239","callerIdentity":"ses-smtp-user.20220808-030923","sendingAccountId":"521475062258","messageId":"01000188d5a5a332-b240cd47-b359-419c-8d52-5de876f71c6c-000000","destination":["astroblurb262@hotmail.com"],"headersTruncated":false,"headers":[{"name":"Received","value":"from [127.0.0.1] ([5.161.56.239]) by email-smtp.amazonaws.com with SMTP (SimpleEmailService-d-W1SLC4730) id ywKtLAgcycwn65uzZtPf for astroblurb262@hotmail.com; Mon, 19 Jun 2023 21:53:02 +0000 (UTC)"},{"name":"Return-Path","value":"<no_reply+02c427f4+astroblurb262=hotmail.com@astrowhat.com>"},{"name":"Message-ID","value":"<e9c6f21b2ec47b97cc6de82c85953e54@astrowhat.com>"},{"name":"Date","value":"Mon, 19 Jun 2023 21:52:36 +0000"},{"name":"Subject","value":"Test convo - New reply to your conversation"},{"name":"From","value":"Astro What? Forum <no_reply@astrowhat.com>"},{"name":"To","value":"Astro_Blurb <astroblurb262@hotmail.com>"},{"name":"MIME-Version","value":"1.0"},{"name":"Content-Type","value":"multipart/alternative; boundary=\"[I]=_swift_1687211556_00cd7acca05dc5730c35ef5e91a7205a[/I]=_\""},{"name":"X-To-Validate","value":"02c427f4+astroblurb262@hotmail.com"}],"commonHeaders":{"returnPath":"no_reply+02c427f4+astroblurb262=hotmail.com@astrowhat.com","from":["Astro What? Forum <no_reply@astrowhat.com>"],"date":"Mon, 19 Jun 2023 21:52:36 +0000","to":["Astro_Blurb <astroblurb262@hotmail.com>"],"messageId":"<e9c6f21b2ec47b97cc6de82c85953e54@astrowhat.com>","subject":"Test convo - New reply to your conversation"}}}

Both are bull-**** Hotmail addresses process (using a different email addrss since Amazon SES marks the bad ones).. the Imap return immediately shows as a hard bounce.. the same BS hotmail address using the add-on shows as a soft bounce.
 
Last edited:
For those that say "this works just fine"... well, there is still an error present... it does catch the bounces... but

Code:
Server error log

ErrorException: [E_WARNING] Attempt to read property "recipient" on bool
src/XF/EmailBounce/Processor.php:106
Generated by: Unknown account
July 4, 2023 at 4:04 AM

Stack trace
#0 src/XF/EmailBounce/Processor.php(106): XF::handlePhpError(2, '[E_WARNING] Att...', '/home/nginx/dom...', 106)
#1 src/addons/Laneros/MailTransport/Api/Controller/SnsNotification.php(45): XF\EmailBounce\Processor->processMessage('{"notificationT...')
#2 src/XF/Mvc/Dispatcher.php(352): Laneros\MailTransport\Api\Controller\SnsNotification->actionPost(Object(XF\Mvc\ParameterBag))
#3 src/XF/Api/Mvc/Dispatcher.php(27): XF\Mvc\Dispatcher->dispatchClass('Laneros\\MailTra...', 'Post', Object(XF\Api\Mvc\RouteMatch), Object(Laneros\MailTransport\Api\Controller\SnsNotification), NULL)
#4 src/XF/Mvc/Dispatcher.php(115): XF\Api\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Api\Mvc\RouteMatch), Object(Laneros\MailTransport\Api\Controller\SnsNotification), NULL)
#5 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Api\Mvc\RouteMatch))
#6 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#7 src/XF.php(524): XF\App->run()
#8 index.php(16): XF::runApp('XF\\Api\\App')
#9 {main}
Request state
array(4) {
  ["url"] => string(22) "/api/amazon-ses/bounce"
  ["referrer"] => bool(false)
  ["_GET"] => array(1) {
    ["/api/amazon-ses/bounce"] => string(0) ""
  }
  ["_POST"] => array(0) {
  }
}


Screen Shot 2023-07-04 at 6.43.39 AM.png

I'm going to try adding the trailing slash and see if that makes a difference.
 
Last edited:
For those that say "this works just fine"... well, there is still an error present... it does catch the bounces... but

Code:
Server error log

ErrorException: [E_WARNING] Attempt to read property "recipient" on bool
src/XF/EmailBounce/Processor.php:106
Generated by: Unknown account
July 4, 2023 at 4:04 AM

Stack trace
#0 src/XF/EmailBounce/Processor.php(106): XF::handlePhpError(2, '[E_WARNING] Att...', '/home/nginx/dom...', 106)
#1 src/addons/Laneros/MailTransport/Api/Controller/SnsNotification.php(45): XF\EmailBounce\Processor->processMessage('{"notificationT...')
#2 src/XF/Mvc/Dispatcher.php(352): Laneros\MailTransport\Api\Controller\SnsNotification->actionPost(Object(XF\Mvc\ParameterBag))
#3 src/XF/Api/Mvc/Dispatcher.php(27): XF\Mvc\Dispatcher->dispatchClass('Laneros\\MailTra...', 'Post', Object(XF\Api\Mvc\RouteMatch), Object(Laneros\MailTransport\Api\Controller\SnsNotification), NULL)
#4 src/XF/Mvc/Dispatcher.php(115): XF\Api\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Api\Mvc\RouteMatch), Object(Laneros\MailTransport\Api\Controller\SnsNotification), NULL)
#5 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Api\Mvc\RouteMatch))
#6 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#7 src/XF.php(524): XF\App->run()
#8 index.php(16): XF::runApp('XF\\Api\\App')
#9 {main}
Request state
array(4) {
  ["url"] => string(22) "/api/amazon-ses/bounce"
  ["referrer"] => bool(false)
  ["_GET"] => array(1) {
    ["/api/amazon-ses/bounce"] => string(0) ""
  }
  ["_POST"] => array(0) {
  }
}


View attachment 288000

I'm going to try adding the trailing slash and see if that makes a difference.

These errors appear when you install everything and Amazon tries to connect. After everything is setup correctly with Amazon SES, this error does not happen a second time. Just delete the errors and and see it yourself over the nexts days.
 
So the only remaining problem is that it doesn't differentiate between soft & hard bounces correctly? Is it a big deal to just treat all bounces the same and unsubscribe them after 1 bounce? Generally you'd want to be slightly more permissive towards soft bounces, but it doesn't seem like a major problem?
 
it doesn't differentiate between soft & hard bounces correctly?

It does differentiate them correctly. I get both, hard bounces and soft bounces.

But depending on the message the email provider sends to Amazon, something might be treated as a soft bounce, although it should be a hard bounce and vice versa. But this has nothing to do with this add-on or Amazon SES, this is a problem with the way different providers communicate the same thing differently.

Therefore I read the text of all bounced messages, no matter whether it is a soft- or hardbounce to make sure that everything works fine.
 
After everything is setup correctly with Amazon SES, this error does not happen a second time. Just delete the errors and and see it yourself over the nexts days.
And still have concerns if it's even working....

Screen Shot 2023-07-05 at 5.47.54 PM.png

And nary a bounce entry one in my email bounce log other than a few I tested, the majority back in June.
 
And still have concerns if it's even working....
And nary a bounce entry one in my email bounce log other than a few I tested, the majority back in June.
What do you see in AWS's SES suppression list? IE: https://us-west-1.console.aws.amazon.com/ses/home?region=us-west-1#/suppression-list
Are there new emails being added there? If so, does it seem correct or are there obvious errors?

AWS's SES suppression list logs hard bounces and automatically blocks them. It doesn't log domain errors or soft bounces.

You can export it with the command line interface (CLI): https://docs.aws.amazon.com/ses/lat...l#sending-email-suppression-list-view-entries - outputs in javascript.

aws sesv2 list-suppressed-destinations|clip - requires sudo apt install geomview (200MB)
or file:
aws sesv2 list-suppressed-destinations > filename.txt
or output into pastebin:
cat filename.txt | curl -F 'clbin=<-' https://clbin.com/
Then:
Convert javascript array to CSV: https://www.convertsimple.com/convert-javascript-array-to-csv/ - delete the outmost curly brackets.
 
AWS's SES suppression list logs hard bounces and automatically blocks them. It doesn't log domain errors or soft bounces.
Only the ones I ran as tests... and none of those were in July, which the chart shows occurring.
And no soft bounces (which should be listed) in the XF ACP for bounce errors.
The question is, where are all those July bounces coming from... if my site is sending out bounced emails (which is the only thing that uses the SES account) then hard or soft... the XF ACP should be listing them there.... and the ONLY ones it lists are the test accounts that I used when comparing the add-on to using an actual bounced email address setup at another mail provider.
 
By the way, @snoopy5 I'm reading your guide. Amazon has test emails that can be used: bounce@simulator.amazonses.com, complaint@simulator.amazonses.com.

I found it odd that "enable raw message delivery" is being recommended since when I set up Listmonk a while back, SNS only worked after I disabled that.

Is C-2 "Sender email address" necessary? Once I had my domain verified with SES I'm able to send from any email@mydomain with SES. For example, I'm using noreply@myforum.com as the "default address" at admin.php?options/groups/emailOptions, and I could change it to whateveriwant@myforum.com and SES will still work without having to do anything more.

Regarding "The option within Xenforo to enable DKIM", I haven't found it necessary. If you receive an email to a Gmail address, you can click the 3 dots on the right side and select "show original".
 
By the way, @snoopy5 I'm reading your guide.

Please bear in mind that I did not do this add-on. I am not a developer. I am a user like you too. JulianD is the coder.

I just want to have one step by step guide for this add-on, because so many people complaint in this thread about the way to set this up and everybody had different errors and nobody knew why.

The guide is the way how I succeeded to implement this add-on and got it working. Not more and not less.

I found it odd that "enable raw message delivery" is being recommended since when I set up Listmonk a while back, SNS only worked after I disabled that.

Maybe there is more than one way to get it working depending on your individual server and webhoster? I did not try yet with this option disabled (as far as I remember).


Is C-2 "Sender email address" necessary? Once I had my domain verified with SES I'm able to send from any email@mydomain with SES

For some yes, for some no. With my first test forum, I did not succeed without verifying additionally the sender email address. Others have reported that they did not need it. So I wrote in the guide how it worked for me to avoid confusions for those people who had the same problems as me. I rather have one step extra than not get this add-on working ;)

Regarding "The option within Xenforo to enable DKIM", I haven't found it necessary.

In my guide I have DKIM within XF ACP disabled. I have not yet tested for any differences by turning this on. Had no time yet. Unless this option would not give a significant advantage or disadvantage, I am fine with leaving this turned off.


And nary a bounce entry one in my email bounce log other than a few I tested,

I can see my soft bounces and hard bounces in the bounce log of XF ACP. The amount of bounces in XF is almost 100% the same as at Amazon SES suppression list. You should verify this.

If it does not appear within Xenforo, the user status will not change and this is what you want to have. That is the purpose of this add-on. You do not want to have a kind of "shadow" bounce log within Amazon which does not synchronize with Xenforo.
 
Last edited:
Top Bottom