{"id":519,"date":"2026-05-31T22:44:14","date_gmt":"2026-05-31T22:44:14","guid":{"rendered":"https:\/\/text.email\/blog\/?p=519"},"modified":"2026-06-08T07:37:23","modified_gmt":"2026-06-08T07:37:23","slug":"zabbix-sms-alerts","status":"publish","type":"post","link":"https:\/\/text.email\/blog\/zabbix-sms-alerts\/","title":{"rendered":"How to Get Zabbix SMS Alerts Without a Modem"},"content":{"rendered":"\n<p>Zabbix SMS alerts have been around forever&#8230; but there&#8217;s a catch, and not a little catch. You need a <strong>physical GSM modem wired to the Zabbix server&#8217;s serial port<\/strong>.<\/p>\n\n\n\n<p>It&#8217;s never good when the official solution feels like a daisy chained hack.<\/p>\n\n\n\n<p>Which is, I&#8217;m guessing, <strong>why you&#8217;re here<\/strong>. You run Zabbix, you want texts when things break, and you&#8217;d rather not buy and mount a legacy GSM modem to make that happen.<\/p>\n\n\n\n<p>The good news is&#8230; you don&#8217;t have to.<\/p>\n\n\n\n<p><strong>There&#8217;s a simple way to get a text out of Zabbix that never touches a modem<\/strong> (or any other extra piece of hardware), and in this article, I&#8217;m going to walk you through setting it up in a matter of minutes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zabbix SMS Alerts: Table of Contents<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#setting-up-sms-alerts-from-zabbix\">Setting Up SMS Alerts from Zabbix (No Modem Required)<\/a><\/li>\n\n\n\n<li><a href=\"#other-ways-to-get-sms-from-zabbix\">Is This Really the Best Way to Get SMS Alerts From Zabbix?<\/a><\/li>\n\n\n\n<li><a href=\"#alerts-running\">Get Your Zabbix SMS Alerts Running in the Next 10 Minutes<\/a><\/li>\n\n\n\n<li><a href=\"#deserve-text\">Which Zabbix Triggers Deserve a Text?<\/a><\/li>\n\n\n\n<li><a href=\"#get-started\">Time to Get Started with Zabbix SMS Alerts<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"setting-up-sms-alerts-from-zabbix\">Setting Up SMS Alerts from Zabbix (No Modem Required)<\/h2>\n\n\n\n<p>We&#8217;re going to set this system up by using the type of alerts that Zabbix <em>can<\/em> send natively and without extra hardware: Emails. And we&#8217;re going to transform those emails into texts, since texts are a far more urgent medium.<\/p>\n\n\n\n<p>Here&#8217;s how.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Get an email-to-text address<\/h3>\n\n\n\n<p>We&#8217;ll use <a href=\"https:\/\/text.email\/\">text.email<\/a>, which is a service that <strong>turns emails into text messages<\/strong>. You send an email to a specific address, it arrives on your phone as an SMS.<\/p>\n\n\n\n<p>(If you&#8217;re thinking&#8230; wait, this sounds vaguely familiar, didn&#8217;t Verizon use to do this? We&#8217;ll get into why that&#8217;s not an option anymore later in this article).<\/p>\n\n\n\n<p>Head over to text.email and sign up for an account with your email address. You&#8217;ll get to pick a private subdomain for your account (so random people can&#8217;t send you email-to-texts), and your delivery address becomes <code>your-number@your-subdomain.text.email<\/code>.<\/p>\n\n\n\n<p>Anything sent to that address lands on your phone as a text in seconds \u2014 Zabbix trigger alerts included.<\/p>\n\n\n\n<p>We&#8217;ll drop this address into Zabbix in the next step, so copy it down.<\/p>\n\n\n\n<p><em>Note: If multiple people need to receive the alerts, you can also create a <a href=\"https:\/\/text.email\/blog\/distribution-lists\/\" data-type=\"post\" data-id=\"296\">distribution list<\/a> in text.email, where one email can go out as a text to several recipients.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Make sure Zabbix&#8217;s Email media type is configured<\/h3>\n\n\n\n<p>Zabbix&#8217;s Email media type is a full mail-server setup, not just a recipient field. If your Zabbix is already emailing you when things break, this is done and you can skip ahead.<\/p>\n\n\n\n<p>If it&#8217;s never been set up, you&#8217;ll configure it under <strong>Alerts \u2192 Media types \u2192 Email<\/strong> (older versions keep this under <strong>Administration \u2192 Media types<\/strong>).<\/p>\n\n\n\n<p>The fields you&#8217;re filling in are the usual SMTP ones (the SMTP server, the port, the HELO, the <strong>From<\/strong> address, connection security, and authentication if your mail server wants it).<\/p>\n\n\n\n<p>Point these at your company&#8217;s real outbound mail server (or an authenticated relay you already use), so the mail is properly SPF\/DKIM-aligned. (If your email-to-text alerts aren&#8217;t working, odds are it&#8217;s because you&#8217;re not using the right outbound mail server.)<\/p>\n\n\n\n<p>Don&#8217;t know your company&#8217;s SMTP settings? You can point Zabbix straight at <a href=\"https:\/\/text.email\/blog\/dont-know-your-companys-smtp-server\/\" data-type=\"post\" data-id=\"103\">text.email&#8217;s own server<\/a>. It&#8217;s the easy fallback, just not as bulletproof long-term as a real relay.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Add your address<\/h3>\n\n\n\n<p>You&#8217;ll now need to assign your text.email address to a user in Zabbix.<\/p>\n\n\n\n<p>Go to <strong>Users \u2192 Users<\/strong>, open the profile of whoever should be getting alerted, and on the <strong>Media<\/strong> tab add a new entry: Type <strong>Email<\/strong>, and put your text.email address in the <strong>Send to<\/strong> field.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Point an action at your email-to-SMS address<\/h3>\n\n\n\n<p>This is also where you set <em>when<\/em> this media is allowed to fire: the active time window and the severity floor. If you only want texts for the serious stuff, this is the spot to say so.<\/p>\n\n\n\n<p>And I <strong>definitely recommend saving text alerts for the most serious situations only<\/strong>, so you don&#8217;t grow numb to them. (Later in this article I have a few suggestions, but obviously you know what&#8217;s worth getting interrupted during dinner for better than I do.)<\/p>\n\n\n\n<p>Under <strong>Alerts \u2192 Actions \u2192 Trigger actions<\/strong>, you&#8217;ve got conditions (say, trigger severity at Warning and up) and operations.<\/p>\n\n\n\n<p>Add a &#8220;Send message&#8221; operation for that user. And if you want to be precise, send only to the Email media so these go specifically to your text.email address.<\/p>\n\n\n\n<p><strong>If you&#8217;ve ever wired up email alerts in Zabbix, none of this is new<\/strong>; you&#8217;re doing the exact same thing, just to an address that comes out as a text.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: One thing worth tuning: keep it short<\/h3>\n\n\n\n<p>You&#8217;re producing an SMS at the end of this, so a verbose alert message gets chopped or split into multiple texts.<\/p>\n\n\n\n<p>Decide what you actually need to see on a lock screen (usually the host and what broke) and trim the message template to that. A subject like <code>Disaster: web01 unreachable<\/code> reads fine on a phone.<\/p>\n\n\n\n<p>Also, if you want, you can <a href=\"https:\/\/text.email\/blog\/sms-formatting\/\" data-type=\"post\" data-id=\"213\">set up that SMS template<\/a> in your text.email dashboard as well.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"other-ways-to-get-sms-from-zabbix\">Is This Really the Best Way to Get SMS Alerts From Zabbix?<\/h2>\n\n\n\n<p>Is email-to-text <em>really<\/em> the smoothest path to Zabbix alerts?<\/p>\n\n\n\n<p>Spoiler: Yes. But here&#8217;s the long version where I&#8217;ll run down the alternatives, so you know what you&#8217;re skipping.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The GSM modem path<\/h3>\n\n\n\n<p>Obviously, you know about this; odds are you wound up at this article because you were specifically trying to find a way <em>not<\/em> to do this.<\/p>\n\n\n\n<p>The modem attachment rig is the built-in media type that Zabbix literally named <strong>SMS<\/strong>, so to them, yes, this is the official way.<\/p>\n\n\n\n<p>Of course, <strong>there are lots of reasons why it&#8217;s a non-starter for most people<\/strong>: it needs a serial GSM modem physically wired to the server, a SIM with a live plan, PIN persistence sorted out so it survives a reboot, serial-port permissions for the Zabbix process. And, someone (aka: YOU) who has to deal with setting that up and maintaining it.<\/p>\n\n\n\n<p>The modems the docs name for testing are old GSM modules (a Siemens MC35, which was released in the <em>year 2000<\/em>) which tells you how long this legacy feature has been collecting dust.<\/p>\n\n\n\n<p>On top of that, because there&#8217;s one modem, <strong>it sends one message at a time<\/strong>: during an alert storm, your texts queue up behind each other exactly when you least want them to.<\/p>\n\n\n\n<p>If you&#8217;ve already got a modem racked next to a bare-metal server, fine. If you don&#8217;t, again, happy to see you here looking for a better alternative.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The DIY webhook route<\/h3>\n\n\n\n<p>Zabbix&#8217;s webhook media type runs server-side JavaScript and can call any HTTP endpoint. That means you can point it at an SMS provider&#8217;s API (<a href=\"https:\/\/text.email\/blog\/twilio-alternatives\/\" data-type=\"post\" data-id=\"30\">Twilio<\/a>, ClickSend, Amazon, and the like) and use their texting infrastructure.<\/p>\n\n\n\n<p>But now you own a webhook.<\/p>\n\n\n\n<p>That&#8217;s an API key, a payload, a provider account, and a little blob of JavaScript that runs every single time something breaks. <strong>Those are <em>other<\/em> moving parts that can fail silently<\/strong> (ironically without texting you that they failed).<\/p>\n\n\n\n<p>But there&#8217;s also an even more insidious potential issue here, one you&#8217;ve likely never heard of.<\/p>\n\n\n\n<p>Sending automated SMS messages in the U.S. drags you into the world of <a href=\"https:\/\/text.email\/blog\/a2p-10dlc\/\" data-type=\"post\" data-id=\"34\">A2P 10DLC<\/a>. That&#8217;s a new-ish, <strong>mandatory carrier registration process<\/strong> where you register your business, describe your &#8220;campaign,&#8221; and wait for approval. Without that, your texts will silently fail.<\/p>\n\n\n\n<p>Overall, this is just a whole lot of overhead for &#8220;text me when a server goes down.&#8221;<\/p>\n\n\n\n<p>The email-to-text path skips all of it. text.email handles the compliance and the SMS delivery; you&#8217;re just sending email, which Zabbix already does.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Don&#8217;t the cell phone companies offer this?<\/h3>\n\n\n\n<p>If the email-to-text idea rang a bell, that&#8217;s because there used to be a version of it built into your cell phone bill.<\/p>\n\n\n\n<p>Every major US carrier ran an email-to-SMS gateway; you&#8217;d email <code>5551234567@vtext.com<\/code> for <a href=\"https:\/\/text.email\/blog\/verizon-email-to-text\/\" data-type=\"post\" data-id=\"20\">Verizon<\/a> or <code>5551234567@txt.att.net<\/code> for <a href=\"https:\/\/text.email\/blog\/att-email-to-text\/\" data-type=\"post\" data-id=\"22\">AT&amp;T<\/a> and so on, and it&#8217;d land as a text.<\/p>\n\n\n\n<p>Plenty of monitoring configs had those addresses plugged in as alert recipients for years.<\/p>\n\n\n\n<p>Then <strong>every single one of the carriers shut them down or let them rot into unreliability<\/strong>. There are a few reasons (too much spam and all those compliance issues we talked about earlier are the big ones). But suffice to say, they&#8217;re gone and aren&#8217;t coming back.<\/p>\n\n\n\n<p>If your old Zabbix action is still pointing at one of those, <strong>it&#8217;s mailing into a hole<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"when-you-need-a-paging-platform\">A full-on paging platform<\/h3>\n\n\n\n<p>An email-to-text gateway gets a text to your phone, reliably, without hardware. But it&#8217;s <strong>not a full paging platform<\/strong> like <a href=\"https:\/\/text.email\/blog\/pagerduty-alternatives\/\" data-type=\"post\" data-id=\"32\">PagerDuty<\/a>.<\/p>\n\n\n\n<p>There&#8217;s no on-call calendar or team rotation. (However, like PagerDuty, text.email has <a href=\"https:\/\/text.email\/blog\/replies\/\" data-type=\"post\" data-id=\"556\">two-way communications<\/a>. So someone can reply &#8220;<a href=\"https:\/\/text.email\/blog\/email-to-alarm-ackd\/\" data-type=\"post\" data-id=\"504\">ACK<\/a>&#8221; and that response will go back to your email.)<\/p>\n\n\n\n<p>If you need real escalation across a large team, that&#8217;s what PagerDuty or Opsgenie are for.<\/p>\n\n\n\n<p>That said, don&#8217;t undersell Zabbix here.<\/p>\n\n\n\n<p><strong>The escalation logic lives in Zabbix actions<\/strong>, not in the SMS layer: repeated notifications, escalation steps, sending to different people as a problem ages.<\/p>\n\n\n\n<p>So even with a plain text on the end, you can do more than fire-once-and-hope.<\/p>\n\n\n\n<p>You won&#8217;t get an on-call calendar, but you can absolutely set up &#8220;text me, and if nobody&#8217;s acknowledged it in fifteen minutes, text me again and text the team lead as well.&#8221;<\/p>\n\n\n\n<p>For a lot of smaller shops without the budget or real need for a paging platform, that&#8217;s perfect. The alert needs to find one or two people, fast, on their phones. You don&#8217;t need a platform for that.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"alerts-running\">Get Your Zabbix SMS Alerts Running in the Next 10 Minutes<\/h2>\n\n\n\n<p>You could not set up a modem for Zabbix SMS alerts today before lunch. But you could absolutely configure these email-to-text alerts, with plenty of time to spare.<\/p>\n\n\n\n<p>The process, start to finish, is quick:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Sign up for <a href=\"https:\/\/text.email\/\">text.email<\/a><\/strong> to get your email-to-text address.<\/li>\n\n\n\n<li><strong>Make sure Zabbix&#8217;s Email media type is configured<\/strong> (and routed through an authenticated mail server, so it doesn&#8217;t get spam-filtered).<\/li>\n\n\n\n<li><strong>Drop in the address<\/strong> and <strong>assign it an action<\/strong>.<\/li>\n\n\n\n<li>Let it run.<\/li>\n<\/ol>\n\n\n\n<p><strong>Want to test out this whole process before you sign up for anything?<\/strong> In Zabbix, just put in <code>your-number@text.email<\/code> (your real 10-digit number), trigger a test alert, and watch the text land on your phone. (You don&#8217;t even need to sign up for anything at text.email in advance.)<\/p>\n\n\n\n<p>After that, the next time a critical issue happens, Zabbix sends an email, text.email turns it into a text, <strong>and a few seconds later your phone buzzes<\/strong>.<\/p>\n\n\n\n<p>Which is what you wanted from Zabbix&#8217;s SMS alerts in the first place, just without the 26-year-old modem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"deserve-text\">Which Zabbix Triggers Deserve a Text?<\/h2>\n\n\n\n<p>You already set a severity floor during the setup process. <\/p>\n\n\n\n<p>But in case you&#8217;re reading this all first before you set up email-to-text alerts and need\/want a refresher, Zabbix gives you six severities: Not classified, Information, Warning, Average, High, Disaster.<\/p>\n\n\n\n<p>The texting line should probably sit around High. <em>Maybe<\/em> Average. <\/p>\n\n\n\n<p>Here&#8217;s my rough breakdown you can use as a jumping off point.<\/p>\n\n\n\n<p><strong>Worth a text:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Zabbix agent unavailable (nodata)<\/strong>. The host went dark, so you&#8217;re now blind to everything else it would&#8217;ve told you.<\/li>\n\n\n\n<li>A <strong>host or critical service that&#8217;s down<\/strong> and won&#8217;t recover without a human.<\/li>\n\n\n\n<li><strong>Disk space critically low<\/strong>.<\/li>\n\n\n\n<li>Anything you&#8217;ve set to <strong>Disaster<\/strong> because it maps to a real SLA.<\/li>\n<\/ul>\n\n\n\n<p><strong>Fine on email:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>High CPU utilization<\/strong> and load average.<\/li>\n\n\n\n<li><strong>High memory and swap usage<\/strong>.<\/li>\n\n\n\n<li><strong>System time drifting out of sync<\/strong>.<\/li>\n\n\n\n<li><strong>Host restarted<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>The rule of thumb I was using here: text the things that stay broken until someone shows up, and leave the self-healing noise (or things that can wait a little bit) on email.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"get-started\">Time to Get Started with Zabbix SMS Alerts<\/h2>\n\n\n\n<p>Alright. You now know \u2014 probably more in depth than you ever planned \u2014 about <strong>the best alternative to using a separate physical modem for Zabbix SMS alerts<\/strong>. And hey, I tossed in a fairly long history of all the options for free. You&#8217;re welcome.<\/p>\n\n\n\n<p>To get started with your email-to-SMS alerts, head over to <a href=\"https:\/\/text.email\">text.email<\/a>. <\/p>\n\n\n\n<p>Grab your unique email-to-text address, plug it into Zabbix, make sure everything&#8217;s configured right, and <strong>you&#8217;ll be all set with easy, reliable text alerts<\/strong>. All without having to spend a whole lot of time, a whole lot of money \u2014 or, probably, both \u2014 setting up an external modem.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to quickly set up Zabbix SMS alerts without needing an external modem.<\/p>\n","protected":false},"author":2,"featured_media":524,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5,10],"tags":[],"class_list":["post-519","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-email-to-sms","category-sysadmins","category-use-cases"],"_links":{"self":[{"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/posts\/519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/comments?post=519"}],"version-history":[{"count":7,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/posts\/519\/revisions"}],"predecessor-version":[{"id":583,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/posts\/519\/revisions\/583"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/media\/524"}],"wp:attachment":[{"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/media?parent=519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/categories?post=519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/tags?post=519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}