Skip to content

groupserver/gs.group.member.bounce

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gs.group.member.bounce

Bouncing email reporting for GroupServer

Author

Michael JasonSmith

Contact

Michael JasonSmith <mpj17@onlinegroups.net>

Date

2014-11-13

Organization

GroupServer.org

Copyright

This document is licensed under a Creative Commons Attribution-Share Alike 4.0 International License by OnlineGroups.Net.

Introduction

Email addresses are unreliable. Because of this SMTP servers have a way of communicating back to the sender when an email message cannot be delivered. These messages are known as bounces. This product (gs.group.member.bounce) provides the system that allows GroupServer to respond to these bounces.

In this document I discuss how bouncing works, and how this product will register a bounce. I also document the pages and notifications that this product provides.

How Bouncing Works

An email message has two addresses in the envelope: a To address and a From address. The addresses in the envelope are different from the myriad of the To and From addresses in the header of the email messages themselves (but the envelope addresses will usually be one of the addresses in the message-header). The envelope addresses are set when communicating with the SMTP server1:

┌Envelope──────────┐
│  To:…            │
│  From:…          │
│┌Message─────────┐│
││┌Header────────┐││
│││    To:…      │││
│││    CC:…      │││
│││    BCC:…     │││
│││    From:…    │││
│││    Reply-To:…│││
│││    Sender:…  │││
││└──────────────┘││
││┌Body──────────┐││
││└──────────────┘││
│└────────────────┘│
└──────────────────┘

The VERP system, which this product supports, allows an SMTP server to report a bounce. If the server cannot deliver a message it will send the message back. The To address in the envelope of the returned message is made from the original To and From addresses:

listId+userMailbox=user.domain@this.server
listID:

The identifier of the list that sent the original email message.

userMailbox:

The mail-box (left-hand side of the @) that is bouncing.

user.domain:

The domain of the mail-server that generated the bounce-message.

this.server:

The domain of the server that sent the original email message.

From these four elements the original To and From addresses can be re-constructed:

  • User Address userMailbox@user.domain
  • Group Address: listId@this.server

The smtp2gs script2 detects when a VERP message arrives, extracts the two addresses, and passes them to a form provided by this product to register a bounce.

Register a Bounce

This product provides a form to register a bounce: /gs-group-member-bounce.html. The form has three entries:

  1. User Address,
  2. Group Address, and
  3. Token3.

When submitted, the form registers a bounce by making an entry in the bounce table. If the system has registered more than 5 bounces in the last 60 days4 then the email address is unverified, so no more email will be sent to it. The form will send a notification to the member if he or she has more than one email address.

  • A bounce notification will be sent if the system has simply registered a bounce.
  • A disabled notification will be sent if the email address has become unverified.

Pages

This product provides two pages:

  • bounce.html in the group context lists the bounces that occur in the group.
  • bounce.html in the profile context lists the bounces associated with a person.

The latter has not been linked, because currently (2014-07-31) the Profile page is a mess, and it needs to be refactored.

Notifications

Three notifications are provided by this product.

gs-group-member-bounce-bouncing.html:

A group member is informed that his or her email address is bouncing if he or she has another address, and the group member has not been informed of a bounce today.

gs-group-member-bounce-disabled.html:

If an address continues to be an issue then it will be disabled, with the Disabled notification sent.

gs-group-member-bounce-disabled-admin.html:

Finally, if the address is disabled then the group administrators are told of it, unless the person in question is a group administrator, in which case he or she is skipped

Resources


  1. See gs.email for an example

  2. See <http://github.com/groupserver/gs.group.messages.add.smtp2gs>

  3. See <http://github.com/groupserver/gs.auth.token>

  4. An email address is not disabled immediately on a bounce because transient errors are common. The current hard-coded rate of 5 bounces in 60 days has been informed by the wisdom of bitter experience.

About

The bounce-handling subsystem for GroupServer groups.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages