Home » Incredible PBX » CentOS/SL Platform » Faxing Returns for Incredible PBX 2027 Platforms

The Most Versatile VoIP Provider: FREE PORTING

Faxing Returns for Incredible PBX 2027 Platforms

As you may know, the introduction of Rocky 8, Debian 11, Ubuntu 22.04, and PHP 7.4 blew our HylaFax/AvantFax/IAXmodem faxing solution out of the water leaving all of the Incredible PBX 2027 builds with no fax capabilities. With some tips from our long-time contributor, Bill Simon, we are happy to report that an alternative solution is now available. It now provides BOTH incoming and outgoing fax support with email PDF delivery of all received faxes. While there are numerous free and paid options that support Outbound Faxing, we now have added an easy-to-use script that provides this functionality on Incredible PBX 2027 platforms.

Inbound Faxing Solution with Incredible PBX 2027

The new inbound faxing solution works much like it did with HylaFax and IAXmodem. You configure your Inbound Routes in FreePBX® to listen for fax tones. When an incoming fax is detected, the call is transferred to a SpanDSP fax context in Asterisk®. The incoming fax is then recorded as a .tiff image. When the recording is finished, we use the TIFF2PDF application to convert the image to a PDF file which is then emailed to a designated email address which you configure as part of this fax setup procedure. The prerequisite, of course, is to assure that Incredible PBX 2027 can send emails. This was covered in the initial setup tutorials, but we will repeat it below for slow learners.

Let’s first get your Incredible PBX 2027 platform configured to detect and process incoming fax calls. Log into your server as root and issue the following commands.

1. For Rocky 8 platforms: yum install libtiff && yum install libtiff-tools
    For Debian, Ubuntu, and Raspberry Pi platforms: apt install libtiff-tools -y

2. Issue the following commands to put the inbound fax context in place:

sed -i '/^\[custom-fax/,/^$/d' /etc/asterisk/extensions_custom.conf
echo '
exten => fax,1,Noop(Fax detected)
exten -> fax,2,Goto(custom-fax-iaxmodem,s,1)

exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,Verbose(3,Incoming Fax)
exten => s,n,Set(FAXEMAIL=)     ; fax email address of recipient
exten => s,n,Set(FAXDEST=/tmp)  ; folder where faxes will be stored
exten => s,n,Set(tempfax=${STRFTIME(,,%C%y%m%d%H%M)})
exten => s,n,ReceiveFax(${FAXDEST}/${tempfax}.tif)
exten => s,n,System(/usr/bin/tiff2pdf -o "${FAXDEST}/${tempfax}.pdf" "${FAXDEST}/${tempfax}.tif")
exten => s,n,System(/usr/bin/echo "Incoming fax is attached." | /usr/bin/mail -s "Incoming FAX  Received" -A "${FAXDEST}/${tempfax}.pdf" "${FAXEMAIL}")
exten => s,n,Hangup

' >> /etc/asterisk/extensions_custom.conf

3. Update the fax context to include your email address for delivery of inbound faxes. Insert your email address in the code below replacing yourname@gmail.com:

sed -i 's|FAXEMAIL=|FAXEMAIL=yourname@gmail.com|' /etc/asterisk/extensions_custom.conf

4. Download and install the Fax module for FreePBX:

fwconsole ma downloadinstall fax
rm /tmp/*
fwconsole reload

5. Open the FreePBX GUI and check to be sure you still have a Custom Destination called Fax (HylaFax). If not, create it:

Target: custom-fax-iaxmodem,s,1
Description: Fax (HylaFax)
Return: No

6. In the FreePBX GUI, modify each of your Inbound Routes to support incoming faxes from the DIDs you’ll be using for inbound faxes. In the new Fax tab, edit the settings as shown below, save the settings, and reload your dialplan.

 Custom Destinations
  Fax (HylaFax)

7. Be sure you have configured Outbound Email with SendMail using the instructions below before continuing.

8. Send a test fax from FaxZero to one of your fax-enabled DID’s while watching the Linux CLI for issues.

Configuring Gmail as Smart Relay Host

Most Incredible PBX implementations will be on networks managed by companies like Comcast, Spectrum, and AT&T that block downstream mail servers (that’s you) from sending email. The solution is to use Gmail or your local ISP as a smart relay host to send mail from your server. You’ll need this to deliver voicemails and faxes via email. Here’s how to set it up using a Gmail account.

IMPORTANT: You MUST obtain and use a Gmail App Password instead of your Gmail account password when running the script below. If you’re a Google hater, here’s an alternative.


Now send yourself a test email message to make sure things are working properly:

echo "test" | mail -s testmessage yourname@yourmailprovider.com

Outbound Faxing Solutions with Incredible PBX 2027

We’ve now developed a sendfax.sh script for use on Incredible PBX 2027 platforms. It lets you send any PDF document as a fax by simply copying the file to the /tmp directory and running the sendfax.sh script. You’ll be prompted for the name of the PDF file to send, the trunk to use for the call, and the phone number of the destination fax in the format required by your designated trunk. Make certain that you have provided the appropriate CallerID number in your Trunk setup, or the outbound calls may fail. After you complete the steps above to enable Inbound Faxing, issue the following commands to install this new Outbound Faxing addition:

cd /root
wget http://incrediblepbx.com/sendfax2027.tar.gz
tar zxvf sendfax2027.tar.gz
rm -f sendfax2027.tar.gz

Now let’s be sure your platform has the necessary components to support Outbound Faxing.

On Rocky 8 platforms, issue the following commands:

yum install libtiff
yum install libtiff-tools
yum install ghostscript

On Debian, Ubuntu and Raspberry Pi platforms, issue the following commands:

 apt update
 apt install libtiff-tools -y
 apt install ghostscript -y

Next edit /root/sendfax.sh and enter the callerid, faxheader, and faxstationid for your new Outbound Faxing Engine.

Disable the messages prompting for these components by issuing the command:
touch /etc/pbx/.sendfax

Finally, for installs before 9/27/2023, if you will be using a PJsip trunk to send outbound faxes, issue the following command to adjust the syntax in the sendfax.sh script. This is automatic for new installs.

sed -i 's|SIP/$mytrunk/$faxnumber|PJSIP/$faxnumber@$mytrunk|' /root/sendfax.sh

Now you’re ready to take Outbound Faxing for a test drive. Deposit a PDF file in the /tmp directory of your server. Then issue the following command to begin the Outbound Faxing process: /root/sendfax.sh. When prompted, enter the file name of your PDF file, the trunk name which will be used to make the call, and the phone number for the fax destination. That’s all the setup that’s required.

When you run the script, it will stay active until the fax has been delivered in order to alert you as to whether the fax transmission was successful. If, for some reason, the fax transmission fails, you can resend it with the following commands:

cp -ap /root/sendfax.call /tmp/cf
rm -f /var/spool/asterisk/outgoing_done/cf
mv /tmp/cf /var/spool/asterisk/outgoing/

You can verify receipt of the new fax attempt by waiting a reasonable time and then issuing these commands:

cd /var/spool/asterisk/outgoing_done
date -d @`cat cf | grep StartRetry | cut -f 2 -d "(" | cut -f 1 -d ")"`
cat cf | grep Status

While it is no longer possible to send faxes directly using AvantFax, there are some additional alternatives. A free one is faxzero.com, which lets you send 5 free faxes a day with up to 3 pages of text plus a cover sheet. A second alternative for infrequent use is to pay FaxZero $2.09 per fax to send up to 25 pages with an optional cover page. Another option is to send and receive faxes from your computer or mobile phone using a dedicated fax number from a service such as FaxDeck. Outbound faxing works almost identically to AvantFax. FaxDeck lets you send and receive up to 300 pages to the U.S. and Canada for $5 a month. Or, for $10 a month, you can send and receive up to 1,000 pages. That’s a penny per page which is less than the cost of most VoIP calls. Many of our recommended providers including Skyetel, ClearlyIP, VoIP.ms, and Vitelity also offer dedicated fax numbers as well as email-to-fax solutions.

Originally published: Monday, January 30, 2023    Updated: September 27, 2023

Need help with Asterisk? Visit the VoIP-info Forum.


Special Thanks to Our Generous Sponsors

FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!

Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.