Convert email newsletters into Atom feeds
leafac / kill-the-newsletter Goto Github PK
View Code? Open in Web Editor NEWConvert email newsletters into Atom feeds
Home Page: https://kill-the-newsletter.com
License: MIT License
Convert email newsletters into Atom feeds
Home Page: https://kill-the-newsletter.com
License: MIT License
Convert email newsletters into Atom feeds
Reproduce:
Hi team - I'm a DigitalOcean employee trying to deploy this app via the DigitalOcean App Platform.
The app seems to build and load, but when I visit the app URL (https://kill-the-newsletter-com-42ke7.ondigitalocean.app/) I get this error:
upstream connect error or disconnect/reset before headers. reset reason: connection termination
Any idea what I may need to do or change to get around this? Thanks much!
Hi. The feed does not support Cyrillic since May 11, example: https://www.kill-the-newsletter.com/feeds/p00s7ek5vsj0zfvivx0a.xml , https://www.kill-the-newsletter.com/feeds/yc6xc6n1sfna44vs44hg.xml . Please, fix it. Sorry for my english.
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.
Is there any way to delete my unused boxes from the host?
I already have a mail server, keep it simple.
If I try to sign up for a Google Scholar alert, a verification email is supposedly send to the kill-the-newsletter inbox, but it doesn't arrived. Any ideas about that (Got similar issues with other services as well)?
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):
<?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 <[email protected]></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!
<br /><br />
<a href="https://bkkinfo.hu/?cel=hir&id=72501">Bővebb információért kattintson ide</a>.<br/>
<br />
<hr /><br />
Azért kapta ezt az üzenetet, mert feliratkozott a <a href="https://bkkinfo.hu">BKK Info</a> szolgáltatására és megjelölte a fent említett járatok valamelyikét.<br />
<ul>
<li>A járatok módosításához kattintson ide: <a href="https://bkkinfo.hu">módosítás</a>.</li>
<li>Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: <a href="https://m.bkkinfo.hu/zavarok/72501/leiratkozas/83876/ukVCUKRM">leiratkozás</a></li>
</ul>
</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 <[email protected]></name></author><updated>2020-03-06T12:50:04+00:00</updated><content type="html"><strong>Érvényes:</strong><br />
Ma 13:48-tól - visszavonásig<br />
<br />
<strong>Közlemény:</strong><br />
A következő járat közlekedése időjárási ok miatt az alábbiak szerint módosul:<br /><ul><li>A libegő nem közlekedik a teljes vonalon.</li></ul><br />
<a href="https://bkkinfo.hu/?cel=hir&id=72501">Bővebb információért kattintson ide</a>.<br/>
<br />
<hr /><br />
Azért kapta ezt az üzenetet, mert feliratkozott a <a href="https://bkkinfo.hu">BKK Info</a> szolgáltatására és megjelölte a fent említett járatok valamelyikét.<br />
<ul>
<li>A járatok módosításához kattintson ide: <a href="https://bkkinfo.hu">módosítás</a>.</li>
<li>Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: <a href="https://m.bkkinfo.hu/zavarok/72501/leiratkozas/83876/ukVCUKRM">leiratkozás</a></li>
</ul>
</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 <[email protected]></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!
<br /><br />
<a href="https://bkkinfo.hu/?cel=hir&id=72470">Bővebb információért kattintson ide</a>.<br/>
<br />
<hr /><br />
Azért kapta ezt az üzenetet, mert feliratkozott a <a href="https://bkkinfo.hu">BKK Info</a> szolgáltatására és megjelölte a fent említett járatok valamelyikét.<br />
<ul>
<li>A járatok módosításához kattintson ide: <a href="https://bkkinfo.hu">módosítás</a>.</li>
<li>Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: <a href="https://m.bkkinfo.hu/zavarok/72470/leiratkozas/83876/ukVCUKRM">leiratkozás</a></li>
</ul>
</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 <[email protected]></name></author><updated>2020-03-05T09:37:09+00:00</updated><content type="html"><strong>Érvényes:</strong><br />
Ma 10:33-tól - visszavonásig<br />
<br />
<strong>Közlemény:</strong><br />
A következő járat közlekedése műszaki ok miatt az alábbiak szerint módosul:<br /><ul><li>A <strong>72</strong>-es trolibusz ritkábban közlekedik a teljes vonalon.</li></ul><br />
<a href="https://bkkinfo.hu/?cel=hir&id=72470">Bővebb információért kattintson ide</a>.<br/>
<br />
<hr /><br />
Azért kapta ezt az üzenetet, mert feliratkozott a <a href="https://bkkinfo.hu">BKK Info</a> szolgáltatására és megjelölte a fent említett járatok valamelyikét.<br />
<ul>
<li>A járatok módosításához kattintson ide: <a href="https://bkkinfo.hu">módosítás</a>.</li>
<li>Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: <a href="https://m.bkkinfo.hu/zavarok/72470/leiratkozas/83876/ukVCUKRM">leiratkozás</a></li>
</ul>
</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 <[email protected]></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.
<br /><br />
<a href="https://bkkinfo.hu/?cel=hir&id=72465">Bővebb információért kattintson ide</a>.<br/>
<br />
<hr /><br />
Azért kapta ezt az üzenetet, mert feliratkozott a <a href="https://bkkinfo.hu">BKK Info</a> szolgáltatására és megjelölte a fent említett járatok valamelyikét.<br />
<ul>
<li>A járatok módosításához kattintson ide: <a href="https://bkkinfo.hu">módosítás</a>.</li>
<li>Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: <a href="https://m.bkkinfo.hu/zavarok/72465/leiratkozas/83876/ukVCUKRM">leiratkozás</a></li>
</ul>
</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 <[email protected]></name></author><updated>2020-03-05T06:32:48+00:00</updated><content type="html"><strong>Érvényes:</strong><br />
Ma 7:24-től - visszavonásig<br />
<br />
<strong>Közlemény:</strong><br />
A következő járat(ok) közlekedése műszaki ok miatt az alábbiak szerint módosul:<br /><ul><li>A <strong>74</strong>-es trolibusz az <i>Ötvenhatosok tere (István utca)</i> és az <i>Amerikai út (Mexikói út M)</i> között nem közlekedik, a kimaradt szakaszon pótló autóbusszal utazhatnak.</li><li>A <strong>72</strong>-es trolibusz nem közlekedik a teljes vonalon, a kimaradt szakaszon pótló autóbusszal utazhatnak.</li></ul><br />
<a href="https://bkkinfo.hu/?cel=hir&id=72465">Bővebb információért kattintson ide</a>.<br/>
<br />
<hr /><br />
Azért kapta ezt az üzenetet, mert feliratkozott a <a href="https://bkkinfo.hu">BKK Info</a> szolgáltatására és megjelölte a fent említett járatok valamelyikét.<br />
<ul>
<li>A járatok módosításához kattintson ide: <a href="https://bkkinfo.hu">módosítás</a>.</li>
<li>Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: <a href="https://m.bkkinfo.hu/zavarok/72465/leiratkozas/83876/ukVCUKRM">leiratkozás</a></li>
</ul>
</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 <[email protected]></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.
<br /><br />
<a href="https://bkkinfo.hu/?cel=hir&id=72442">Bővebb információért kattintson ide</a>.<br/>
<br />
<hr /><br />
Azért kapta ezt az üzenetet, mert feliratkozott a <a href="https://bkkinfo.hu">BKK Info</a> szolgáltatására és megjelölte a fent említett járatok valamelyikét.<br />
<ul>
<li>A járatok módosításához kattintson ide: <a href="https://bkkinfo.hu">módosítás</a>.</li>
<li>Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: <a href="https://m.bkkinfo.hu/zavarok/72442/leiratkozas/83876/ukVCUKRM">leiratkozás</a></li>
</ul>
</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 <[email protected]></name></author><updated>2020-03-03T15:20:54+00:00</updated><content type="html"><strong>Érvényes:</strong><br />
Ma 16:16-tól - visszavonásig<br />
<br />
<strong>Közlemény:</strong><br />
A következő járat(ok) közlekedése baleset miatt az alábbiak szerint módosul:<br /><ul><li>A <strong>74</strong>-es trolibusz a <i>Rózsák tere</i> és az <i>Amerikai út (Mexikói út M)</i> között nem közlekedik, a kimaradt szakaszon pótló autóbusszal utazhatnak.</li><li>A <strong>72</strong>-es trolibusz terelve közlekedik, nem érinti a <i>Vakok Intézete</i> és a <i>Közlekedési Múzeum</i> megállót.</li></ul><br />
<a href="https://bkkinfo.hu/?cel=hir&id=72442">Bővebb információért kattintson ide</a>.<br/>
<br />
<hr /><br />
Azért kapta ezt az üzenetet, mert feliratkozott a <a href="https://bkkinfo.hu">BKK Info</a> szolgáltatására és megjelölte a fent említett járatok valamelyikét.<br />
<ul>
<li>A járatok módosításához kattintson ide: <a href="https://bkkinfo.hu">módosítás</a>.</li>
<li>Az összes fent említett járat értesítéseiről leiratkozáshoz kattintson ide: <a href="https://m.bkkinfo.hu/zavarok/72442/leiratkozas/83876/ukVCUKRM">leiratkozás</a></li>
</ul>
</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"><h1>“bkk-info” Inbox Created</h1>
<p>
Sign up for the newsletter with<br>
<a href="mailto:[email protected]" class="copiable">[email protected]</a>
</p>
<p>
Subscribe to the Atom feed at<br>
<a href="https://www.kill-the-newsletter.com/feeds/__id__.xml" target="_blank" class="copiable">https://www.kill-the-newsletter.com/feeds/__id__.xml</a>
</p>
<p>
Don’t share these addresses.<br>
They contain a security token that other people could use<br>
to send you spam and to control your newsletter subscriptions.
</p>
<p>Enjoy your readings!</p>
<p><a href="https://www.kill-the-newsletter.com" class="button">Create Another Inbox</a></p>
</content></entry></feed>
Hey, could you provide a docker image?
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.
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?
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.
I subscribe to this mail list https://lists.apple.com/mailman/listinfo/security-announce/ and found the content received stip out line break which make it hard to read.
From the archive https://lists.apple.com/archives/security-announce/2019/May/msg00005.html , the content does have line break.
If you need the feed / email url, would you mind providing a private channel, so that I can send it to you privately.
Thanks.
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
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.
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:
# 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
kill-the-newsletter.com. 10800 IN TXT "v=spf1 -all"
v=spf1 mx -all
to allow the mail server to send mail.*._domainkey.kill-the-newsletter.com
, check if your DNS provider supports wildcard records._dmarc.kill-the-newsletter.com. 10800 IN TXT "v=DMARC1; p=reject;"
You can also consult hardenize.com for great email server reports.
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?
This thing is just awesome!
Just wanna let you know and thank you for this!
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'
}
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.
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.
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.
Very nice idea @leafac !
I was wondering how this handles newsletters that want you to confirm your subscription. I assume also for those there will be a feed entry created that should include a confirmation link?
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
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?
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
The error is on index.ts:208 line <form method="POST" action="/">
I dont know what the best approach is, but i replaced /
with #
and that fixed the problem.
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?
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.
First of all, thank you for this service!
Unfortunately it does sometimes generate bad XML, I put the anonymized feed into a
validator
If you need it, I can provide the actual link via mail.
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.
Hi. Thank you for the amazing product and service.
Is it possible to have buttons that copy the created inbox's email address and feed URL to the clipboard?
Should be very easy with https://clipboardjs.com
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?
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?
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.
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.
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!
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?
Hi,
I use https://www.kill-the-newsletter.com/ to send a newsletter to a matrix room via matrix RSS Bot. Everytime a newsletter arrives there is a link in the matrix room but it links to https://riot.im/app/. Any idea why this is the case?
However: It would be much better if there is just the mail subject as plaintext posted.
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?
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 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?
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?
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?
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!
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:
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.
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!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.