使用 Asterisk 的传真服务器

来自 Alpine Linux
此材料正在进行中...

这是一个实验性页面,旨在查看这是否可以替代使用 Asterisk+IAXmodem+hylafax 的更复杂的设置
(最后编辑者:Sertonix,于 2023 年 11 月 17 日。)

本文档旨在创建一个尽可能简单的传真服务器,以使用 asteriskasterisk-fax 发送和接收传真。

安装

此 Wiki 文档基于 Alpine Linux 2.6(但也可能适用于 2.1.3 或更高版本)

首先设置 Alpine Linux 基础系统(您很可能需要运行 setup-alpine 来设置最基本的设置)

防火墙

您可能需要设置防火墙以保护您的系统。本文档不讨论此任务。Alpine Linux 中的一些防火墙替代方案是

配置电子邮件

安装所需软件包

我们将使用软件包 email 通过电子邮件将传真发送给各种收件人。让我们从安装软件包开始

apk add email

通用配置

  • 编辑相应的文件

vi /etc/email/email.conf

提示: 与您的 SMTP 提供商合作设置合适的设置。您很可能想要
  • 更改变量 SMTP_SERVERSMTP_PORTMY_NAMEMY_EMAILADDRESS_BOOK
  • 注释掉变量 SIGNATURE_FILE

地址簿

  • 编辑相应的文件(在此示例中,我们假设您没有更改 ADDRESS_BOOK 变量的值)。

vi /etc/email/email.address.template

  • 定义一些适合您需求的电子邮件地址。
    即将到来的 asterisk 配置假定您在此地址簿中预定义了一些记录。例子

内容:/etc/email/email.address.template

# 单个电子邮件地址 single:joe = joe@foo.bar single:jeff = jeff@foo.bar single:jill = jill@foo.bar # 将接收错误报告的组 group: grp-support = joe, jeff # 将接收发送到分机 12345 的传真的组 group: grp-12345 = joe, jill

测试功能

完成 email 配置后,您可以通过运行如下命令进行测试

email -s "testmail" -b jeff

配置 Asterisk

配置 Asterisk 有多种方法。本文档仅描述一个非常基本的设置,您可能需要根据自己的需求进行修改。但是通过遵循本文档,您应该拥有一个仅使用 asteriskasterisk-fax 的全功能传真服务器。

安装所需软件包

在此阶段,您的 Alpine Linux 仅包含一些用于基本功能的软件包。我们需要安装一些额外的软件包才能获得传真功能。

apk add asterisk asterisk-fax

通用设置

设置一些通用设置

  • 编辑相应的文件

vi /etc/asterisk/asterisk.conf

  • 将此内容复制到文件中

内容:/etc/asterisk/asterisk.conf

[global] astetcdir => /etc/asterisk astmoddir => /usr/lib/asterisk/modules astvarlibdir => /var/lib/asterisk astspooldir => /var/spool/asterisk astrundir => /var/run/asterisk astlogdir => /var/log/asterisk astdbdir => /var/lib/asterisk astkeydir => /var/lib/asterisk astdatadir => /var/lib/asterisk astagidir => /var/lib/asterisk/agi-bin

加载适当的模块

Asterisk 需要一些模块才能处理传真。

  • 编辑相应的文件

vi /etc/asterisk/modules.conf

  • 将此内容复制到文件中

内容:/etc/asterisk/modules.conf

[modules] autoload=yes
待办事项: 尝试更改此设置,以便我们不加载超出需要的模块


启用 SIP

  • 编辑相应的文件

vi /etc/asterisk/sip.conf

  • 将此内容复制到文件中

内容:/etc/asterisk/sip.conf

[general] context=fax_incoming  ; 传入呼叫的默认上下文 allowoverlap=no  ; 禁用重叠拨号支持。(默认为 yes) bindport=5060  ; 要绑定的 UDP 端口(SIP 标准端口为 5060);bindport 是 Asterisk 将侦听的本地 UDP 端口 bindaddr=0.0.0.0  ; 要绑定的 IP 地址(0.0.0.0 绑定到所有地址) srvlookup=no  ; 在出站呼叫上启用 DNS SRV 查找 disallow=all  ; 首先禁用所有编解码器 allow=ulaw ; 允许的编解码器(按优先级顺序) allow=alaw ; 允许的编解码器(按优先级顺序) udpbindaddr=0.0.0.0 canreinvite=yes t38pt_udptl=yes,redundancy,maxdatagram=400

启用 udptl

  • 编辑相应的文件

vi /etc/asterisk/udptl.conf

  • 将此内容复制到文件中

内容:/etc/asterisk/udptl.conf

[general]

配置传真

  • 编辑相应的文件

vi /etc/asterisk/res_fax.conf

  • 将此内容复制到文件中

内容:/etc/asterisk/res_fax.conf

[general] maxrate=9600 minrate=2400 statusevents=yes

配置拨号方案

  • 编辑相应的文件

vi /etc/asterisk/extensions.lua

  • 将此内容复制到文件中

内容:/etc/asterisk/extensions.lua

待办...

权限

为了使 asterisk 能够读取新的配置文件,我们需要为这些文件设置正确的权限

chown -R asterisk:asterisk /etc/asterisk

启动服务

现在是时候启动服务了

rc-service asterisk start

配置 asterisk 在下次重启时自动启动

rc-update add asterisk

测试

发送传真

准备

将 '.tiff' 文件保存到 '/tmp/' (在我们的示例中,我们将文件命名为 '/tmp/testfax.tiff').

创建一个类似于这样的文件(根据您的本地需求进行修改)

内容:/tmp/testfax.txt

[general] Channel: SIP/123@10.20.30.40 Callerid: "TestFAX" WaitTime: 30 Maxretries:3 RetryTime: 300 Account: 1000 Application: SendFax Data: /tmp/testfax.tiff

更改新创建文件的权限

chown asterisk:asterisk /tmp/testfax*

发送传真

现在将 '/tmp/testfax.txt' 复制到 '/var/spool/asterisk/outgoing/'。当您执行此操作后,asterisk 将尝试根据您在文件中编写的内容发送传真。

cp -p /tmp/testfax.txt /var/spool/asterisk/outgoing/