Code Monkey home page Code Monkey logo

kill-the-newsletter's Introduction

kill-the-newsletter's People

Contributors

dependabot[bot] avatar johanholmerin avatar leafac avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kill-the-newsletter's Issues

Feature Request: Support for attachments

It appears that current implementation kill the newsletter ignores attachments on the email. It would be great if attachments could be included in the RSS News as a hyperlink.

It might be something you'd have to configure from the server side, like if you don't want your kill-the-newsletter.com hosted version to get filled up with attachmenta.

Trying to use generated feed with ifttt.com

I tried to create a trigger to my feed and got an error complaining about the feed:

Feed has items without valid urls

It direct me to:
https://help.ifttt.com/hc/en-us/articles/115010396768-My-RSS-feed-is-not-working-correctly

Actual feed content (with id removed):

feed content
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><link rel="self" type="application/atom+xml" href="https://www.kill-the-newsletter.com/feeds/__id__.xml"/><link rel="alternate" type="text/html" href="https://www.kill-the-newsletter.com/"/><title>bkk-info</title><subtitle>Kill the Newsletter! Inbox “[email protected]”</subtitle><id>urn:kill-the-newsletter:__id__</id><updated>2020-03-06T16:05:42+00:00</updated>
<entry>
  <id>urn:kill-the-newsletter:kdorjzi2nhnzzjsdxgne</id>
  <title>BKK Info | a libegő | nem közlekedik (időjárási ok)</title>
  <author><name>BKK Info &lt;[email protected]&gt;</name></author>
  <updated>2020-03-06T16:05:42+00:00</updated>
  <content type="html">A libegő közlekedését érintő zavar véget ért. A menetrend szerinti közlekedés helyreállásáig szíves türelmét kérjük!
&lt;br /&gt;&lt;br /&gt;
&lt;a href="https://bkkinfo.hu/?cel=hir&amp;id=72501"&gt;Bővebb információért kattintson ide&lt;/a&gt;.&lt;br/&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Azért kapta ezt az üzenetet, mert feliratkozott a &lt;a href="https://bkkinfo.hu"&gt;BKK Info&lt;/a&gt; szolgáltatására és megjelölte a fent említett járatok valamelyikét.&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;A járatok módosításához kattintson ide: &lt;a href="https://bkkinfo.hu"&gt;módosítás&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: &lt;a href="https://m.bkkinfo.hu/zavarok/72501/leiratkozas/83876/ukVCUKRM"&gt;leiratkozás&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


</content>
</entry>
<entry><id>urn:kill-the-newsletter:df6ft19vzqrc0ek1wjxa</id><title>BKK Info | a libegő | nem közlekedik (időjárási ok)</title><author><name>BKK Info &lt;[email protected]&gt;</name></author><updated>2020-03-06T12:50:04+00:00</updated><content type="html">&lt;strong&gt;Érvényes:&lt;/strong&gt;&lt;br /&gt;
Ma 13:48-tól - visszavonásig&lt;br /&gt;
&lt;br /&gt;

&lt;strong&gt;Közlemény:&lt;/strong&gt;&lt;br /&gt;
    A következő járat közlekedése időjárási ok miatt az alábbiak szerint módosul:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A libegő nem közlekedik a teljes vonalon.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;a href="https://bkkinfo.hu/?cel=hir&amp;id=72501"&gt;Bővebb információért kattintson ide&lt;/a&gt;.&lt;br/&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Azért kapta ezt az üzenetet, mert feliratkozott a &lt;a href="https://bkkinfo.hu"&gt;BKK Info&lt;/a&gt; szolgáltatására és megjelölte a fent említett járatok valamelyikét.&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;A járatok módosításához kattintson ide: &lt;a href="https://bkkinfo.hu"&gt;módosítás&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: &lt;a href="https://m.bkkinfo.hu/zavarok/72501/leiratkozas/83876/ukVCUKRM"&gt;leiratkozás&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


</content></entry><entry><id>urn:kill-the-newsletter:lhjralgkrd9ki08edf3s</id><title>BKK Info | 72-es trolibusz | ritkábban közlekedik (műszaki ok)</title><author><name>BKK Info &lt;[email protected]&gt;</name></author><updated>2020-03-05T09:48:12+00:00</updated><content type="html">A 72-es trolibusz közlekedését érintő zavar véget ért. Türelmét és megértését köszönjük!
&lt;br /&gt;&lt;br /&gt;
&lt;a href="https://bkkinfo.hu/?cel=hir&amp;id=72470"&gt;Bővebb információért kattintson ide&lt;/a&gt;.&lt;br/&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Azért kapta ezt az üzenetet, mert feliratkozott a &lt;a href="https://bkkinfo.hu"&gt;BKK Info&lt;/a&gt; szolgáltatására és megjelölte a fent említett járatok valamelyikét.&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;A járatok módosításához kattintson ide: &lt;a href="https://bkkinfo.hu"&gt;módosítás&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: &lt;a href="https://m.bkkinfo.hu/zavarok/72470/leiratkozas/83876/ukVCUKRM"&gt;leiratkozás&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


</content></entry><entry><id>urn:kill-the-newsletter:od7divdcd29niaun6opd</id><title>BKK Info | 72-es trolibusz | ritkábban közlekedik (műszaki ok)</title><author><name>BKK Info &lt;[email protected]&gt;</name></author><updated>2020-03-05T09:37:09+00:00</updated><content type="html">&lt;strong&gt;Érvényes:&lt;/strong&gt;&lt;br /&gt;
Ma 10:33-tól - visszavonásig&lt;br /&gt;
&lt;br /&gt;

&lt;strong&gt;Közlemény:&lt;/strong&gt;&lt;br /&gt;
    A következő járat közlekedése műszaki ok miatt az alábbiak szerint módosul:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A &lt;strong&gt;72&lt;/strong&gt;-es trolibusz ritkábban közlekedik a teljes vonalon.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;a href="https://bkkinfo.hu/?cel=hir&amp;id=72470"&gt;Bővebb információért kattintson ide&lt;/a&gt;.&lt;br/&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Azért kapta ezt az üzenetet, mert feliratkozott a &lt;a href="https://bkkinfo.hu"&gt;BKK Info&lt;/a&gt; szolgáltatására és megjelölte a fent említett járatok valamelyikét.&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;A járatok módosításához kattintson ide: &lt;a href="https://bkkinfo.hu"&gt;módosítás&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: &lt;a href="https://m.bkkinfo.hu/zavarok/72470/leiratkozas/83876/ukVCUKRM"&gt;leiratkozás&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


</content></entry><entry><id>urn:kill-the-newsletter:ay8jxzdao4ul3bhakcon</id><title>BKK Info | 72-es, 74-es trolibusz | nem közlekedik (műszaki ok)</title><author><name>BKK Info &lt;[email protected]&gt;</name></author><updated>2020-03-05T06:35:31+00:00</updated><content type="html">A 72-es és a 74-es trolibusz közlekedését érintő zavar véget ért, de a menetrend helyreállásáig a pótlóbuszok is segítik a közlekedést.
&lt;br /&gt;&lt;br /&gt;
&lt;a href="https://bkkinfo.hu/?cel=hir&amp;id=72465"&gt;Bővebb információért kattintson ide&lt;/a&gt;.&lt;br/&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Azért kapta ezt az üzenetet, mert feliratkozott a &lt;a href="https://bkkinfo.hu"&gt;BKK Info&lt;/a&gt; szolgáltatására és megjelölte a fent említett járatok valamelyikét.&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;A járatok módosításához kattintson ide: &lt;a href="https://bkkinfo.hu"&gt;módosítás&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: &lt;a href="https://m.bkkinfo.hu/zavarok/72465/leiratkozas/83876/ukVCUKRM"&gt;leiratkozás&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


</content></entry><entry><id>urn:kill-the-newsletter:zhwdrx63hauhire7u9sr</id><title>BKK Info | 72-es, 74-es trolibusz | nem közlekedik (műszaki ok)</title><author><name>BKK Info &lt;[email protected]&gt;</name></author><updated>2020-03-05T06:32:48+00:00</updated><content type="html">&lt;strong&gt;Érvényes:&lt;/strong&gt;&lt;br /&gt;
Ma 7:24-től - visszavonásig&lt;br /&gt;
&lt;br /&gt;

&lt;strong&gt;Közlemény:&lt;/strong&gt;&lt;br /&gt;
    A következő járat(ok) közlekedése műszaki ok miatt az alábbiak szerint módosul:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A &lt;strong&gt;74&lt;/strong&gt;-es trolibusz az &lt;i&gt;Ötvenhatosok tere (István utca)&lt;/i&gt; és az &lt;i&gt;Amerikai út (Mexikói út M)&lt;/i&gt; között nem közlekedik, a kimaradt szakaszon pótló autóbusszal utazhatnak.&lt;/li&gt;&lt;li&gt;A &lt;strong&gt;72&lt;/strong&gt;-es trolibusz nem közlekedik a teljes vonalon, a kimaradt szakaszon pótló autóbusszal utazhatnak.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;a href="https://bkkinfo.hu/?cel=hir&amp;id=72465"&gt;Bővebb információért kattintson ide&lt;/a&gt;.&lt;br/&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Azért kapta ezt az üzenetet, mert feliratkozott a &lt;a href="https://bkkinfo.hu"&gt;BKK Info&lt;/a&gt; szolgáltatására és megjelölte a fent említett járatok valamelyikét.&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;A járatok módosításához kattintson ide: &lt;a href="https://bkkinfo.hu"&gt;módosítás&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: &lt;a href="https://m.bkkinfo.hu/zavarok/72465/leiratkozas/83876/ukVCUKRM"&gt;leiratkozás&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


</content></entry><entry><id>urn:kill-the-newsletter:nozamnvlzxvpwwsnlega</id><title>BKK Info | 72-es, 74-es trolibusz | nem közlekedik (baleset)</title><author><name>BKK Info &lt;[email protected]&gt;</name></author><updated>2020-03-03T15:34:32+00:00</updated><content type="html">A 72-es és a 74-es trolibusz közlekedését érintő zavar véget ért, de a menetrend helyreállásáig a pótlóbuszok is segítik a közlekedést.
&lt;br /&gt;&lt;br /&gt;
&lt;a href="https://bkkinfo.hu/?cel=hir&amp;id=72442"&gt;Bővebb információért kattintson ide&lt;/a&gt;.&lt;br/&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Azért kapta ezt az üzenetet, mert feliratkozott a &lt;a href="https://bkkinfo.hu"&gt;BKK Info&lt;/a&gt; szolgáltatására és megjelölte a fent említett járatok valamelyikét.&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;A járatok módosításához kattintson ide: &lt;a href="https://bkkinfo.hu"&gt;módosítás&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: &lt;a href="https://m.bkkinfo.hu/zavarok/72442/leiratkozas/83876/ukVCUKRM"&gt;leiratkozás&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


</content></entry><entry><id>urn:kill-the-newsletter:4sc2jgytsnin9h5h0joq</id><title>BKK Info | 72-es, 74-es trolibusz | nem közlekedik (baleset)</title><author><name>BKK Info &lt;[email protected]&gt;</name></author><updated>2020-03-03T15:20:54+00:00</updated><content type="html">&lt;strong&gt;Érvényes:&lt;/strong&gt;&lt;br /&gt;
Ma 16:16-tól - visszavonásig&lt;br /&gt;
&lt;br /&gt;

&lt;strong&gt;Közlemény:&lt;/strong&gt;&lt;br /&gt;
    A következő járat(ok) közlekedése baleset miatt az alábbiak szerint módosul:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A &lt;strong&gt;74&lt;/strong&gt;-es trolibusz a &lt;i&gt;Rózsák tere&lt;/i&gt; és az &lt;i&gt;Amerikai út (Mexikói út M)&lt;/i&gt; között nem közlekedik, a kimaradt szakaszon pótló autóbusszal utazhatnak.&lt;/li&gt;&lt;li&gt;A &lt;strong&gt;72&lt;/strong&gt;-es trolibusz terelve közlekedik, nem érinti a &lt;i&gt;Vakok Intézete&lt;/i&gt; és a &lt;i&gt;Közlekedési Múzeum&lt;/i&gt; megállót.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;a href="https://bkkinfo.hu/?cel=hir&amp;id=72442"&gt;Bővebb információért kattintson ide&lt;/a&gt;.&lt;br/&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Azért kapta ezt az üzenetet, mert feliratkozott a &lt;a href="https://bkkinfo.hu"&gt;BKK Info&lt;/a&gt; szolgáltatására és megjelölte a fent említett járatok valamelyikét.&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;A járatok módosításához kattintson ide: &lt;a href="https://bkkinfo.hu"&gt;módosítás&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: &lt;a href="https://m.bkkinfo.hu/zavarok/72442/leiratkozas/83876/ukVCUKRM"&gt;leiratkozás&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


</content></entry><entry><id>urn:kill-the-newsletter:jlgtnalthcvrkevnpgvc</id><title>“bkk-info” Inbox Created</title><author><name>Kill the Newsletter!</name></author><updated>2020-03-03T08:50:55+00:00</updated><content type="html">&lt;h1&gt;“bkk-info” Inbox Created&lt;/h1&gt;

&lt;p&gt;
  Sign up for the newsletter with&lt;br&gt;
  &lt;a href="mailto:[email protected]" class="copiable"&gt;[email protected]&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  Subscribe to the Atom feed at&lt;br&gt;
  &lt;a href="https://www.kill-the-newsletter.com/feeds/__id__.xml" target="_blank" class="copiable"&gt;https://www.kill-the-newsletter.com/feeds/__id__.xml&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  Don’t share these addresses.&lt;br&gt;
  They contain a security token that other people could use&lt;br&gt;
  to send you spam and to control your newsletter subscriptions.
&lt;/p&gt;

&lt;p&gt;Enjoy your readings!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.kill-the-newsletter.com" class="button"&gt;Create Another Inbox&lt;/a&gt;&lt;/p&gt;
</content></entry></feed>

Docker

Hey, could you provide a docker image?

Cannot execute binary file

I am trying to use kill-the-newsletter on Oracle Linux 8. It is aarch64. When I run "[the server] # ./kill-the-newsletter configuration.js" per the instruction. There is a warning: "./kill-the-newsletter: ./kill-the-newsletter: cannot execute binary file". I used kill-the-newsletter--linux--v1.0.1.tgz.
Is that aarch64 not supported? Can you provide some suggestion?

Thank you in advance.

Can't receive newsletter

I create serval email address, and it receive email normal at the begin. But it seems they don't update later.

I manually send a email to one of them, and it didn't update the feed.

How can I make it work?

Race condition when receiving multiple emails for the same feed

Symptoms:
Created a kill-the-newsletter.com feed that every 24h receives 5 new emails. Multiple successfully sent emails never show up in the feed.

Possible explanation:
Every time a email arrives exim creates a new Rails runner. (https://github.com/leafac/kill-the-newsletter/blob/master/config/exim/exim.production.example.conf#L29)

This runner reads a file, modifies it and then rewrites it. (https://github.com/leafac/kill-the-newsletter/blob/97cbc83c589033197370ceecb850c587d0399d4a/app/mailers/inbox_mailer.rb#L29)

If two or more emails arrive (more or less) at the same time we have a race condition that may results in not persisting all but one email.

How to pass the "click-to-verify-your-email-account" step?

Hi Leandro!
Firstly thanks so much for your great tool !

But it becomes a big issue that I/we can't verify our email account via clicking on the verification link the newsletter handlers are sending automatically upon subscription.

Any ideas how we can solve that issue?
Cheers

URL redirection resolver

I wonder if it would be possible to have an URL redirection resolver. Some of the newsletters I subscribed to are doing heavy tracking with marketing URLS, such as https://click.convertkit-mail4.com/38u6[...]0ap/l2he[...]d5f6/aHR0[...]MTI5

If the server would resolve the link to its final destination, the tracking would at least be delegated to the server side and thus be more private for the user. Don't know whether this would imply other security-related problems with this approach, though.

Add TLS/STARTTLS support

Hi, first of all: Thanks for this incredible service. I really love it! ❤️

Unfortunately, I noticed that the main instance, kill-the-newsletter.com (thanks for hosting) does not support STARTTLS, which is a no-go IMO. The used smtp-server library has support for it, but you disable it.

Enabling support seems to be relatively easy:
First, do not disable the STARTTLS command.
Second, set up key, cert and eventually ca parameters to point to the certificate you already have for HTTPS.

Congrats, you have enabled encryption! 🎊


Additionally, if you are already at it, check recommendations from internet.nl:

  • Add a DANE record pinning the Let's Encrypt CA certificates. Pinning the two CA certificates makes the TLSA records safe for the next decades. You just have to stick to Let's Encrypt. They should be:
    # ISRG Root X1
    _25._tcp.kill-the-newsletter.com.	10800	IN	TLSA	2 1 1 0b9fa5a59eed715c26c1020c711b4f6ec42d58b0015e14337a39dad301c5afc3
    # ISRG Root X2
    _25._tcp.kill-the-newsletter.com.	10800	IN	TLSA	2 1 1 762195c225586ee6c0237456e2107dc54f1efc21f61a792ebd515913cce68332
    
    You already have the required DNSSEC on the kill-the-newsletter.com domain.
    You can use this test page if you have deployed it.
  • Add IPv6 support to the mail server. It's 2022, IPv6 should be supported by default. And as you only receive mails, you should not fear deliverability problems.
  • Avoid misuse of your domain for spam. Also see this Cloudflare article.
    • Add a SPF record. If you never send email from your domain, just set
      kill-the-newsletter.com.	10800	IN	TXT	"v=spf1 -all"
      
      Alternatively v=spf1 mx -all to allow the mail server to send mail.
    • Eventually add a null DKIM record as described by the Cloudflare article. Cloudflare wants to set the wildcard record *._domainkey.kill-the-newsletter.com, check if your DNS provider supports wildcard records.
    • Add a DMARC record rejecting mail for failing SPF/DKIM checks
    _dmarc.kill-the-newsletter.com.	10800	IN	TXT	"v=DMARC1; p=reject;"
    

You can also consult hardenize.com for great email server reports.

Configuration with Docker behind Reverse Proxy

Hi,
I'm having an issue deploying this awesome service.
I set up my compose like this:

    build: $DOCKERDIR/apps/killthenewsletter
    container_name: ktn
    networks:
      - traefik
    security_opt:
      - no-new-privileges:true
    restart: unless-stopped
    ports:
      - 2525:2525
    labels:
      - "traefik.enable=true"
      ## HTTP Routers
      - "traefik.http.routers.ktn.entrypoints=https"
      - "traefik.http.routers.ktn.rule=Host(`$KTN_SUBDOMAIN.$DOMAINNAME1`)"
      - "traefik.http.routers.ktn.tls=true"
      ## HTTP Services
      - "traefik.http.routers.ktn.service=ktn"
      - "traefik.http.services.ktn.loadbalancer.server.port=8000"
      - "traefik.http.routers.ktn.middlewares=chain-no-auth@file"

The container builds successfully and runs and I can access it through my Traefik reverse proxy without an issue.

When I generate an email if I send an email to it I get the following error:
554 5.7.1 <[email protected]>: Relay access denied

My Dockerfile is:

FROM node:latest

WORKDIR /kill-the-newsletter

COPY package*.json ./
RUN npm ci --production
COPY . .

VOLUME /kill-the-newsletter/static/feeds/
VOLUME /kill-the-newsletter/static/alternate/

ENV WEB_PORT=8000
ENV EMAIL_PORT=2525
ENV BASE_URL=https://ktn.undebug.com
ENV EMAIL_DOMAIN=ktn.undebug.com
ENV ISSUE_REPORT=mailto:[email protected]

EXPOSE 8000
EXPOSE 2525

CMD npm start

The port 2525 is open. I have no idea what I'm missing. Can somebody help?

Awesome!

This thing is just awesome!
Just wanna let you know and thank you for this!

Error: /lib64/libm.so.6: version `GLIBC_2.29' not found

Hello,

I am unable to run KTN on RHEL (Oracle Linux) v8

/tmp/caxa/kill-the-newsletter--migration/lhofwjpkx7/node_modules/bindings/bindings.js:121
        throw e;
        ^

Error: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /tmp/caxa/kill-the-newsletter--migration/lhofwjpkx7/node_modules/better-sqlite3/build/Release/better_sqlite3.node)
    at Object.Module._extensions..node (node:internal/modules/cjs/loader:1151:18)
    at Module.load (node:internal/modules/cjs/loader:972:32)
    at Function.Module._load (node:internal/modules/cjs/loader:813:14)
    at Module.require (node:internal/modules/cjs/loader:996:19)
    at require (node:internal/modules/cjs/helpers:92:18)
    at bindings (/tmp/caxa/kill-the-newsletter--migration/lhofwjpkx7/node_modules/bindings/bindings.js:112:48)
    at Object.<anonymous> (/tmp/caxa/kill-the-newsletter--migration/lhofwjpkx7/node_modules/better-sqlite3/lib/database.js:9:24)
    at Module._compile (node:internal/modules/cjs/loader:1092:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1121:10)
    at Module.load (node:internal/modules/cjs/loader:972:32) {
  code: 'ERR_DLOPEN_FAILED'
}

No html and nothing pushed to atom

Yesterday, some of my feeds started to render html as plain text. Today, none of my feeds are updating at all. I noticed that version 0.05 was released yesterday.

Revserse Proxy Error - Auto-Encrypt - AcmeRequest Fails

First, been using kill-the-newsletter for over a year now, and I love it; thanks for the great work!

Unable to Get Cert
Today I was attempting to spin up a new instance of kill-the-newsletter, and it appears Auto-Encrypt included in the compiled version for 1.0.1 is using an outdated algorithm for CSR signing and, as a result, fails to get a CERT.

Below is the error I receive. Note, I removed my domain from the output below and replaced it with [kill-the-newsletter-server] so that is why it may look odd.

Email server started
   📕    ❨auto-encrypt❩ Directory is using endpoint https://acme-v02.api.letsencrypt.org/directory
   👤    ❨auto-encrypt❩ Creating identity (/home/[kill-the-newsletter-server]/kill-the-newsletter/data/keys/tls/production/account-identity.pem)
   🤖    ❨auto-encrypt❩ Provisioning Let’s Encrypt certificates for [kill-the-newsletter-server].example-services.com.
   📈    ❨auto-encrypt❩ Number of authorisations to validate: 1
   💗    ❨auto-encrypt❩ Authorisation was previously validated and is still valid.
   📝    ❨auto-encrypt❩ An authorisation was validated for the order! (1/1)
   🎊    ❨auto-encrypt❩ All authorisations validated.
   🔒    ❨auto-encrypt❩ HTTP server is now forwarding HTTP requests to HTTPS (302).
   💃    ❨auto-encrypt❩ Finalising order…
   👤    ❨auto-encrypt❩ Creating identity (/home/[kill-the-newsletter-server]/kill-the-newsletter/data/keys/tls/production/[kill-the-newsletter-server].com/certificate-identity.pem)
/tmp/caxa/kill-the-newsletter/dxvoiiwdvh/node_modules/@small-tech/auto-encrypt/lib/Order.js:178
        throw new Error(error)
              ^

Error: AcmeRequest.requestError: (400 urn:ietf:params:acme:error:badCSR Error finalizing order :: signature algorithm not supported)
    at Order.init (/tmp/caxa/kill-the-newsletter/dxvoiiwdvh/node_modules/@small-tech/auto-encrypt/lib/Order.js:178:15)
    at processTicksAndRejections (node:internal/process/task_queues:94:5)
    at async Function.getInstanceAsync (/tmp/caxa/kill-the-newsletter/dxvoiiwdvh/node_modules/@small-tech/auto-encrypt/lib/Order.js:47:5)
    at async Certificate.provisionCertificate (/tmp/caxa/kill-the-newsletter/dxvoiiwdvh/node_modules/@small-tech/auto-encrypt/lib/Certificate.js:248:19)
    at async Certificate.createSecureContext (/tmp/caxa/kill-the-newsletter/dxvoiiwdvh/node_modules/@small-tech/auto-encrypt/lib/Certificate.js:220:7)
    at async Certificate.getSecureContext (/tmp/caxa/kill-the-newsletter/dxvoiiwdvh/node_modules/@small-tech/auto-encrypt/lib/Certificate.js:47:7)
    at async TLSSocket.options.SNICallback [as _SNICallback] (/tmp/caxa/kill-the-newsletter/dxvoiiwdvh/node_modules/@small-tech/auto-encrypt/index.js:162:31)

I can run the kill-the-newsletter service without the proxy, so it looks like it's an issue with the reverse proxy.

Support for own reverse proxy

I'd like to install the application within my Docker environment.

There, I use a nginx reverse proxy for redirecting the requests from the subdomain to the corresponding service, since the proxy is opening the ports 80 and 443. The proxy is also handling the certificates for https.

Is it possible to run the application just on port 80?
The port for the email server can be opened seperatly.

Thanks in advance.

BTW: If you like I can provide my Dockerfile afterwards.

Allow usage via API

Thanks for your great tool! It would be great if it was possible to use it in more automated way thanks to some simple API, the most basic idea would be receiving the feed name and returning the generated id, though returning an object containing mail address and feed address may be preferred. I may even implement this if you are willing to accept such a feature

Docker

Is there a dockerized version of this project? Is not, I might make one and contribute.

Do you have any heads up on things to be aware of before I start doing it?

5.7.1 <[email protected]>: Relay access denied

I'm getting the following error when attempting to send emails to my Kill-the-Newsletter instance.

I followed the guide pretty meticulously, could there be something I overlooked?

DNS Records are as detailed in your guidance material.

I appreciate the work you do.

Thank you,
Eduardo

Don't index `/alternate/` & `/feeds/`

Howdy @leafac, I stumbled across your project and it looks pretty slick—hoping I can take it for a spin when I get some down time.

On my first-pass I noticed that the /alternate/ route is showing up as indexed by search engines e.g., https://duckduckgo.com/?q=site%3Akill-the-newsletter.com

My first instinct would be that you would want a minimal /robots.txt like so:

User-agent: *
Disallow: /alternate/

You may also want to disallow /feeds/ as well, but I'm not 100% sure on that one. Thoughts?

Certificates not renewing

Followed the deployment steps for KTN outlined in the materials on the github page and watched the walkthrough video for setting up no problem. KTN ran for 3 months, but then the https certificate expired and I am unable to renew it. Followed the steps in the materials provided, but it is not working.

Creating docker for unraid

Hi, love the idea of subscribing to newsletters through RSS.

I have totally no background in coding but have just followed instructions to install dockers previously. Have a little experience with dockers and debian but not much else.
Currently using Unraid as my os, and would like to host my own deployment using docker.

I have successfully run the linux release in the directory /mnt/user/Mine/kill-the-newsletter

After that, I created a Dockerfile following the sample from: https://github.com/leafac/kill-the-newsletter/blob/b9907a8021cebd6cd4a4b3131fd31ac5aa0a2e37/Dockerfile. The only changes made was to the port numbers, changing from 8000 to 11000.

Upon running docker build -t kill-the-newsletter ., system returns the following error:

Sending build context to Docker daemon  75.74MB
Step 1/15 : FROM node:latest
 ---> 7105279fa2ab
Step 2/15 : WORKDIR /kill-the-newsletter
 ---> Using cache
 ---> 034323dbc2cc
Step 3/15 : COPY package*.json ./
COPY failed: no source files were specified

So I made another attempt, by downloading the source code from https://github.com/leafac/kill-the-newsletter/archive/refs/tags/v1.0.1.zip, extracting them to the folder /mnt/user/Mine/kill-the-newsletter, then executing docker build -t kill-the-newsletter . again. The following appeared:

Sending build context to Docker daemon  76.43MB
Step 1/15 : FROM node:latest
 ---> 7105279fa2ab
Step 2/15 : WORKDIR /kill-the-newsletter
 ---> Using cache
 ---> 034323dbc2cc
Step 3/15 : COPY package*.json ./
 ---> Using cache
 ---> 93aa1b3cbb14
Step 4/15 : RUN npm ci --production
 ---> Running in 825ee612d572
npm WARN deprecated [email protected]: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated [email protected]: this library is no longer supported
npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142

> [email protected] prepare
> tsc

sh: 1: tsc: not found
npm notice
npm notice New minor version of npm available! 7.15.1 -> 7.19.0
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.19.0>
npm notice Run `npm install -g [email protected]` to update!
npm notice
npm ERR! code 127
npm ERR! path /kill-the-newsletter
npm ERR! command failed
npm ERR! command sh -c tsc

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-06-27T15_25_42_508Z-debug.log
The command '/bin/sh -c npm ci --production' returned a non-zero code: 127

Any help is appreciated.

Duplicate Posts

Great tool!!

I am picking up some issues around duplicate posts being created. I suspect it may have to do with the email having a CC or a second email address. Is there anything that can be done to only create 1 post from an email regardless of who it's destined for etc?

Feature Request: Prefetch images

Oftentimes marketing emails contain images with extra tracking bits in their URLs. Some email clients give the option to hide images unless prompted by the user but no RSS reader I'm aware of offers a similar feature. This leads to easy tracking of the readers and the times they decide to read.

Kill the Newsletter could mitigate this by replacing the src tags with ones that point to its own server and either prefetching them or acting as a proxy. Not sure how viable prefetching would be, as images need to be stored somewhere and usually have different URLs for different subscribers (though the content may be the same). Are old emails culled after a certain point?

Should never run as root

The example systemd configuration is very insecure as it runs kill-the-newsletter as root: https://github.com/leafac/kill-the-newsletter/blob/main/deployment-example/kill-the-newsletter.service. This is generally a bad idea, but especially in the case of interpreted languages like JavaScript.

I'd recommend changing it to a dedicated user, or at least the "www-data" or "nobody" user depending on which Linux distro is in use - Debian uses "www-data" for web services whereas RHEL/CentOS uses "nobody".

I'd change it and submit a PR but I'm not not sure if any other documentation pages would need updating too.

Feature Request: PubSubHubbub/WebSub support

Given the nature of email, being able to push articles to clients the moment they are received would be convenient. This can be achieved by implementing PubSubHubbub/WebSub to push to clients that are publicly available (i.e. web-based or client/server feed readers). This would probably reduce bandwidth usage too, as frequent refreshes would turn into a single request per new email.

The PubSubHubbub Github organization has lots of good resources on the protocol.

Discontinued?

Hi there - thanks for the great app. Sad that I only manage to discover it yesterday.

Has this project been discontinued? In disbelief, I tried out four newly created inboxes but none of them works. RSS reader can fetch the first entry (the welcome one w/ address + rss feed url) but nothing after that. Or is there some sort of trigger?

Thanks!

Self hosting

Hi, thank you for this great project!

I would love to self-host an instance of this service on my own server.
I have managed to make a Dockerfile to get it build and running, but I just realized that the domain name "kill-the-newsletter.com" is hard-coded everywhere.

It is not a problem for the HTML (usability suffers, but I don't care), but it is an issue for the checking of the incoming e-mails.

I would like to make a PR to allow setting the mail domain based on an environment variable (the default being kill-the-newsletter.com, so that you don't have to change anything to your deploy configuration).

What do you think?

How long are unused inboxes kept?

I created a new inbox back in May and haven't received any emails to it since. I chopped this up to the fact that the newsletter probably hasn't had any updates but upon sending a tester email to it, the feed didn't update.

Is this an issue on my end or is there a time when "unused" inboxes are silently deleted?

How to compile kill-the-newsletter to exe?

I am able to run kill-the-newsletter locally with node, but I want to compile it to exe to put it on Digital Ocean. I'm on Windows 10.
After installing caxa, I tried to make an exe file with this command:

npx caxa --directory . --command "{{caxa}}/node_modules/.bin/node" "{{caxa}}/lib" --output ktn.exe

It created the exe but when I try to run it, it throws an error:

`internal/modules/cjs/loader.js:1089
throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
^

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: C:\Users\Dell\AppData\Local\Temp\caxa\ktn\kerfwv1oby\node_modules@leafac\html\distribution\index.js
require() of ES modules is not supported.
require() of C:\Users\Dell\AppData\Local\Temp\caxa\ktn\kerfwv1oby\node_modules@leafac\html\distribution\index.js from C:\Users\Dell\AppData\Local\Temp\caxa\ktn\kerfwv1oby\lib\index.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename C:\Users\Dell\AppData\Local\Temp\caxa\ktn\kerfwv1oby\node_modules@leafac\html\distribution\index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from C:\Users\Dell\AppData\Local\Temp\caxa\ktn\kerfwv1oby\node_modules@leafac\html\package.json.

at Object.Module._extensions..js (internal/modules/cjs/loader.js:1089:13)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Module.require (internal/modules/cjs/loader.js:961:19)
at require (internal/modules/cjs/helpers.js:92:18)
at Object.<anonymous> (C:\Users\Dell\AppData\Local\Temp\caxa\ktn\kerfwv1oby\lib\index.js:13:16)
at Module._compile (internal/modules/cjs/loader.js:1072:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12) {

code: 'ERR_REQUIRE_ESM'
}`

What can I do to solve it? I tried downgrading node-fetch as this post suggested but it didn't help.

I would appreciate it if you could support easy installation.

I appreciate this service. I don't like to read newsletters in email. Also, I would like to share newsletters with my team members and other partners. This is a great service. I mainly use slack, discord, telegram. A lot of newsletters keep coming up. It's a flow. I read a lot of newsletters to get insight.

This has no limit on quantity compared to similar services.
However, I am worried that my behavior will put pressure on the server. It would be nice if I could selfhost with Heroku or Vercel. Can you help me?

conten are encoded in "content" tag

I used to forward stackoverflow newsletter to kill-the-newsletter and subscribe with tiny tiny rss.

Before January 29, 2019, I got the newsletter in tt-rss normally, but the next letter received in February 12, 2019 break. I find the content is encoded in "content" tag, cause tt-rss to display it as blank.

Is this intended or is this a bug?

Emails disappear after a while

Hi, is there some limit on the amount of emails that can be stored under an email address? I’ve seen that they disappear after a while. What are the inbox rules or limits? Do emails in the xml file disappear after some set amount of time?

Also is there a way to extend the limit or remove it if I were to host it my own server?

HTML Pages all 404

Starting today, all of the HTML pages of my Kill The Newsletter Feeds are 404ing.

I typically open several newsletters in browser because they don't style well in my RSS reader.

https://kill-the-newsletter.com/alternate/<page-key>.html

This is happening on all of my feeds, not just one

Thanks!

Email Confirmation Filter

Very nice tool. But, one snag that I ran into recently comes from the email confirmation process that most newsletters implement.

I can parse the URL from the xml that is generated in order to confirm the subscription. But because the email is sent to the xml feed... the atomic/rss reader considers the feed to be invalid. Specifically, I have tried to setup the feed on Instapaper and it rejects the feed.

Don't know what the right solution would be. Perhaps:

  1. A query field after ? in the URL that filters out non-rss xml
  2. A POST method which would allow the user to remove a specific xml entry
  3. Something else?

Since RSS feeds eventually expire older entries, eventually this problem will disappear but depending upon the activity of the newsletter it might be a while.

Switching from sendgrid to existing postfix setup

Because reasons, I had KTN set up on a bare-metal machine that also holds my mailserver using Dovecot, Postfix, and procmail. I had everything set up with sendgrid previously, but that's borked now, and I'm excited to see the new version of KTN is setup to be more selfhosted.

What's stopping me is that I'm an amateur, particularly with Ruby, and while I'm sure there's a way to modify your scripts/setup from Exim to use Postfix/Procmail, I don't know enough Ruby or about Exim to quite grasp where you're pulling the data from to route it elsewhere.

Are you familiar enough with postfix and procmail to give me some insight on where to start poking here to get it to work with my existing setup?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.