[PHP-DEV] Headers of the PHP mailing lists

Hi there!

sorry for the off-topic thread, I’m writing about the list itself.

At work we built a feature in a mail client that deals with newsletters subscriptions.

Subscriptions are identified by messages having a List-ID or List-Unsubscribe header. Then, to differentiate mails being newsletters or list discussions, one heuristic is to look at the Precedence header, it can be bulk for mass mailing (so newsletters) or list (discussions). And when working on that I noticed that PHP lists were wrongly sent the mails with Precedence: bulk. Is this something that could be fixed?

It’s not a big deal since I’ve since added another heuristic that works woth the PHP mailing lists (classify subscription as discussion is it has a List-Post​ header) but wanted to let you know, it may be useful for other clients if / when they implement features using those headers.

Also, the List-ID is not properly formatted, it’s supposed to be wrapped in angle brackets but it’s not, so instead of List-Id: [internals.lists.php.net](http://internals.lists.php.net) it should be List-Id: <[internals.lists.php.net](http://internals.lists.php.net)> or even List-Id: PHP Internals list <[internals.lists.php.net](http://internals.lists.php.net)> to give it a human friendly name. One downside of fixing it though is that it may break automatic filtering rules of people matching exactly List-Id: internals.lists.php.net.

···

regards,

Mathieu Rochette

Hi Mathieu,

Questions around this, are probably better directed at systems@php.net,
but it's here now, so I'll answer.

On Thu, 31 Jul 2025, Mathieu Rochette wrote:

At work we built a feature in a mail client that deals with
newsletters subscriptions.

Subscriptions are identified by messages having a List-ID or
List-Unsubscribe header. Then, to differentiate mails being
newsletters or list discussions, one heuristic is to look at the
`Precedence` header, it can be `bulk` for mass mailing (so
newsletters) or `list` (discussions). And when working on that I
noticed that PHP lists were wrongly sent the mails with `Precedence:
bulk`. Is this something that could be fixed?

I can certainly change the "Precedence: bulk" header to "Precedence:
list". I would have to do that for all our 124 lists, but I am
moderately reluctant in doing this, as Google is being annoying
requiring specific things for email delivery, and I don't want to upset
them again.

It's not a big deal since I've since added another heuristic that
works woth the PHP mailing lists (classify subscription as discussion
is it has a `List-Post` header) but wanted to let you know, it may be
useful for other clients if / when they implement features using those
headers.

Also, the List-ID is not properly formatted, it's supposed to be
wrapped in angle brackets but it's not, so instead of `List-Id:
internals.lists.php.net` it should be `List-Id:
<internals.lists.php.net`> or even ``List-Id: PHP Internals
list <internals.lists.php.net> to give it a human friendly name. One
downside of fixing it though is that it may break automatic filtering
rules of people matching exactly `List-Id: internals.lists.php.net`.``

We can easily change the List-Id header too, as long as I don't need to
add a manual description to all 124 of them. So for now, I would suggest
to change them to "List-Id: <internals.lists.php.net>". Would that work?

cheers,
Derick

--
https://derickrethans.nl | https://xdebug.org | https://dram.io

Author of Xdebug. Like it? Consider supporting me: Xdebug: Support

mastodon: @derickr@phpc.social @xdebug@phpc.social

On Thursday, July 31st, 2025 at 18:13, Derick Rethans <derick@php.net> wrote:

Hi Mathieu,

Questions around this, are probably better directed at systems@php.net,
but it's here now, so I'll answer.

noted.

On Thu, 31 Jul 2025,

Mathieu Rochette

wrote:

> At work we built a feature in a mail client that deals with
> newsletters subscriptions.
>

> Subscriptions are identified by messages having a List-ID or
> List-Unsubscribe header. Then, to differentiate mails being
> newsletters or list discussions, one heuristic is to look at the
> `Precedence` header, it can be `bulk` for mass mailing (so
> newsletters) or `list` (discussions). And when working on that I
> noticed that PHP lists were wrongly sent the mails with `Precedence: bulk`. Is this something that could be fixed?

I can certainly change the "Precedence: bulk" header to "Precedence:
list". I would have to do that for all our 124 lists, but I am
moderately reluctant in doing this, as Google is being annoying
requiring specific things for email delivery, and I don't want to upset
them again.

I would be surprised if they penalized you for this since you'll more accurately describe the messages. I don't know how their delivery systems works though, so I understand if you don't want to gamle on it :ok_hand:

> It's not a big deal since I've since added another heuristic that
> works woth the PHP mailing lists (classify subscription as discussion
> is it has a `List-Post` header) but wanted to let you know, it may be
> useful for other clients if / when they implement features using those
> headers.
>

> Also, the List-ID is not properly formatted, it's supposed to be
> wrapped in angle brackets but it's not, so instead of `List-Id: internals.lists.php.net` it should be `List-Id: <internals.lists.php.net`> or even ``List-Id: PHP Internals list <internals.lists.php.net> to give it a human friendly name. One downside of fixing it though is that it may break automatic filtering rules of people matching exactly `List-Id: internals.lists.php.net`.``

We can easily change the List-Id header too, as long as I don't need to
add a manual description to all 124 of them. So for now, I would suggest
to change them to "List-Id: <internals.lists.php.net>". Would that work?

Yes that would be great, adding a description is optional and can be done later too. if you feel like it you could do it only for the most used lists too for example.

thank you,
Mathieu

cheers,
Derick

--
https://derickrethans.nl | https://xdebug.org | https://dram.io

Author of Xdebug. Like it? Consider supporting me: Xdebug: Support

mastodon: @derickr@phpc.social @xdebug@phpc.social

Hi,

On Thu, 31 Jul 2025, Derick Rethans wrote:

On Thu, 31 Jul 2025, Mathieu Rochette wrote:

> And when working on that I noticed that PHP lists were wrongly sent
> the mails with `Precedence: bulk`. Is this something that could be
> fixed?

I can certainly change the "Precedence: bulk" header to "Precedence:
list". I would have to do that for all our 124 lists, but I am
moderately reluctant in doing this, as Google is being annoying
requiring specific things for email delivery, and I don't want to
upset them again.
>
> Also, the List-ID is not properly formatted, it's supposed to be
> wrapped in angle brackets but it's not, so instead of `List-Id:
> internals.lists.php.net` it should be `List-Id:
> <internals.lists.php.net`> or even ``List-Id: PHP Internals
> list <internals.lists.php.net> to give it a human friendly name.

We can easily change the List-Id header too, as long as I don't need
to add a manual description to all 124 of them. So for now, I would
suggest to change them to "List-Id: <internals.lists.php.net>". Would
that work?

I have now made these changes:

- Added the <> around the value of List-Id.
- Changed "Precedence: bulk" to "Precendence: list"

If Gmail decides not to deliver email, then, I suppose that's their
problem.

cheers,
Derick
--
https://derickrethans.nl | https://xdebug.org | https://dram.io

Author of Xdebug. Like it? Consider supporting me: Xdebug: Support

mastodon: @derickr@phpc.social @xdebug@phpc.social