typpo / textbelt

Free API for outgoing SMS
https://textbelt.com/
MIT License
2.99k stars 505 forks source link

Self-Hosted Walkthrough #77

Open namomitk opened 8 years ago

namomitk commented 8 years ago

I'm working on a self hosted server. I'm able to send to Sprint and AT&T right now. I was able to send to Verizon for awhile, but I think they might have greylisted me for a bit.

Trying to get all the nice proper mail server records setup right. But, I'm struggling as I'm a little out of my comfort zone here.

I think I've got, MX and PTR/rDNS right. I might have the SPF record right, but it needs a bit of time since I just set it. Not exactly sure if I can get DKIM setup properly without some pointers.

Has anyone self-hosted successfully? Would you be willing to write-up a quick guide on the Wiki of this repo?

daluu commented 8 years ago

:-(

I didn't look into the details, but I had assumed self hosting was mostly plug and play assuming you had mail server routing set up and all the other dependencies installed/configured. It seems otherwise from your post.

namomitk commented 8 years ago

Verizon doesn't give me back any information. I've been good and specified my carrier 9/10 times. I let one or two go without the carrier flag and got responses via MailerDaemon stating they wouldn't take my mail without such and such record. I've been setting them up as best I can and those messages stopped. Verizon doesn't say what it is that they want. But it would seem self hosting will work best if you have a trusted mail server setup and all the right records in place. Someone is bound to have it working right. This would help take the burden off textbelt.com as well. Share the load.

tankerkiller125 commented 8 years ago

It appears that even the official hosted text belt is having issues sending to Verizon. I'm thinking that adding remote email server connections would help (send from gmail or other very trusted email server)

daluu commented 8 years ago

Remote email server as in a legit official/trusted one you have direct access to? Otherwise, if I'm not mistaken, a remote email server connection means you need a user account to authenticate with, although for Gmail they offer an unauthenticated option (but only for recipient destinations within gmail.com or a Google Apps domain)

That would still be fine for self hosting (one that isn't exposed publicly). May not help much for a public service including the officially hosted one. High usage and spammers may just end up blacklisting the trusted mail server and email account used to authenticate the server.

tankerkiller125 commented 8 years ago

@daluu In theory you could also use a service like send grid to handle the sending of the emails.

warren8r commented 8 years ago

@daluu maybe you can help me. I, too, am trying to self host. I first attempted with a Windows machine and gave up. I now have a centos device. So far so good - EXCEPT for the email routing. Right when the text sends, Textbelt blows up (I didn't have Mutt or an email server setup - I am TOTALLY brand new to this). I have tried Sendmail, which seems to send, but I am not receiving in the email on the other end. Now, before I start troubleshooting ANOTHER service, I have some questions for you: 1. Do you recommend using Sendmail or is there another Email service that you suggest? 2. Might you have a guide to setup that service for Textbelt? 3. Does it make more sense to use gmail as a proof of concept? 4. I have seen some mutt to gmail config tutorials, but nothing specific to the Textbelt environment - Might you have some suggestions or a write-up on your own for gmail? Thank you so very much for your time and attention! -Matt

daluu commented 8 years ago

@warren8r sorry I don't have any writeup nor have I tried self hosting myself. So I myself would say +1 to this issue. Hopefully @typpo or someone else will write up the walkthrough.

As for GMail, the info is available online if you search for how to send emails with GMail (SMTP), you then just use the connection details with your preferred mail client. I haven't looked at the textbelt codebase, but what you could do here is, swap out the code/config that sends the mail (via mutt, sendmail, or pointed to localhost for SMTP) and set it to use the GMail settings/server (to which you would have to add your account info for authentication). This would be a direct SMTP send, so simpler (to understand) than routing through something like mutt, and sendmail if you're accustomed to email "clients" rather than servers. Mutt worked for me on OS X with a default install via brew, but it was weird as it left a local copy in my Mac terminal inbox (not the Mac Mail app) while sending out the email to the destination (which was a Google apps domain, but that got flagged into Spam folder), though I wasn't using mutt for textbelt but rather stuff at work.

I'd say the missing walkthrough should cover (the basic) mail (server) setup for those not familiar with mail setup, (especially in a *nix environment).

warren8r commented 8 years ago

Thank you, @daluu! Since the mutt endpoint is in the textbelt code (and God knows where/how), I am going to try to configure mutt to interface with Gmail - but that is not my optimal solution. I would like to use Sendmail (hosted on same server). Maybe @namomitk can provide some explanation on their email server setup? Thanks!!

typpo commented 8 years ago

Here is a pointer to the mutt endpoint in the textbelt code, for posterity:

https://github.com/typpo/textbelt/blob/master/lib/text.js#L67

Thanks @warren8r for sticking with it :)

daluu commented 8 years ago

Just a thought I had recently with the work required to set up textbelt for self hosting: if we have this writeup done (or even if not, though that would be more work to figure things out), I (or anyone) can look into building a docker image of textbelt. Then one would have an option of simply deploying an almost fully configured textbelt server - the only customization one would need to do would the the little things like sender email address, etc. or specific customizations (nginx, domains, mail routing) if needed. It would be intended to work out of the box with little configuration.

warren8r commented 8 years ago

Great idea, @daluu ! Count me in!

daluu commented 7 years ago

FYI, I took a stab at the docker image, haven't gotten it fully working. See #88.

In a way, the docker image specification is partly a self hosting walkthrough as it contains steps to install textbelt and dependencies from scratch and configure things on an Ubuntu based system.

I could certainly use help in flushing out any missed or improper config steps in the docker image spec.

warren8r commented 7 years ago

I will help!

Matt

On Sep 18, 2016, at 12:31 AM, David Luu notifications@github.com wrote:

FYI, I took a stab at the docker image, haven't gotten it fully working. See #88.

In a way, the docker image specification is partly a self hosting walkthrough as it contains steps to install textbelt and dependencies from scratch and configure things on an Ubuntu based system.

I could certainly use help in flushing out any missed or improper config steps in the docker image spec.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

daluu commented 6 years ago

I came across these recently, if they're of any help:

lowendbox.com/blog/how-to-send-sms-messages-from-your-vps-using-textbelt http://nickdesaulniers.github.io/blog/2016/06/18/mutt-gmail-ubuntu/

namomitk commented 6 years ago

I ended up buying a piece of software called NowSMS. A junk android phone and an unlimited texting only plan from a MVNO (cricket).

A PC hosts a web app which supports many different API calls. There is an app on the android phone that takes over the built in text client. API Calls come in and get routed to the phone for sending via SMS/MMS. No need to worry about gateways as it works just like a regular phone.

Unfortunately it’s not open source or free but it solved the problem. My client wasn’t afraid to spend some money to make it work. Probably not a great solution for a self-hosted DIYer solution. It’s a little bit pricey to get started.

paulbeard commented 6 years ago

I have confirmed that sendmail (postfix) works and that hosted textbelt works. But I don't know how to integrate the nginx stub into my existing nginx.conf. It looks like I just add it as a server listening on 9090 but I am either missing something or overthinking something else. Seems like it's not listening on 9090, not that I check with sockstat. Do I need to change anything in that stub? It looks like it just passes the POST request on to textbelt…

This got me going…https://lowendbox.com/blog/how-to-send-sms-messages-from-your-vps-using-textbelt/

It works but I get errors back in response from all these other messaging gateways.

xxx-xxx-xxxx@email.uscc.net, xxx-xxx-xxxx@message.alltel.com, xxx-xxx-xxxx@messaging.sprintpcs.com, xxx-xxx-xxxx@mobile.celloneusa.com, xxx-xxx-xxxx@msg.fi.google.com, xxx-xxx-xxxx@msg.telus.com, xxx-xxx-xxxx@paging.acswireless.com, xxx-xxx-xxxx@pcs.rogers.com, xxx-xxx-xxxx@qwestmp.com, xxx-xxx-xxxx@sms.mycricket.com, xxx-xxx-xxxx@sms.ntwls.net, xxx-xxx-xxxx@text.republicwireless.com, xxx-xxx-xxxx@tmomail.net, xxx-xxx-xxxx@txt.att.net, xxx-xxx-xxxx@txt.windmobile.ca, xxx-xxx-xxxx@vtext.com

mirikerstein commented 4 years ago

@namomitk I know this is an old thread; I chanced on it while researching sms api's. Any chance you're still around and available to discuss?