Raspberry Pi で FAX。

超久しぶりにラズパイを触りました。
というのも、持ってるVOIPアダプタが一つ壊れてFAXが使えなくなったのでTT

たまにしか使わないから、とうとうラズパイで作る事にした訳です。

広告

Raspberry Pi + Asterisk + iaxmodem + hylafax + Fusion IP-Phone Smart

Fusion IP-Phone Smartは元々使ってたので、残りのセッティングです。

凄く参考にした・・・
というかホボコピペですwww

で、忘れちゃいけないし、万一参考サイト様が無くなると困るので、メモ残します。
転載に近いのでスイマセンm(uu)m

Raspberry Pi と Asterisk + iaxmodem + hylafax と Fusion IP-Phone Smart で作る FAX サーバ(1)

↑が参考サイト様です。

では行きます。

インスト

# sudo aptitude install asterisk iaxmodem hylafax-server hylafax-client

当然イメージ焼いてるので次はやらないと思うけど一応。

設定系

/etc/asterisk/asterisk.conf


# diff asterisk.conf asterisk.conf.original

languageprefix = yes          ; Use the new sound prefix path syntax.

runuser = asterisk            ; The user to run as.
rungroup = asterisk           ; The group to run as.

コメントアウトを外すのみ。

/etc/asterisk/asterisk.conf

[general]
context=default
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0   
transport=udp
srvlookup=yes
allowguest=no
localnet=192.168.0.XXX/255.255.255.0
register => 12345678:abcdefgh@smart.0038.net
qualify=yes
[fusion-smart]
type=friend
username=12345678
fromuser=12345678
secret=abcdefgh
host=smart.0038.net
fromdomain=smart.0038.net
context=default
insecure=port,invite
canreinvite=no
disallow=all
allow=ulaw
allow=alaw
dtmfmode=inband
nat=yes
faxdetect=yes

このまま書くのみ。

username=12345678
fromuser=12345678
↑はSIPアカ

secret=abcdefgh
↑はパスワード


# asterisk -vvvvr
rpi120*CLI> sip show peers

/*終了は*/
rpi120*CLI> quit

起動のチェック。

/etc/init.d/iaxmodem

#! /bin/sh
#
### BEGIN INIT INFO
# Provides:          iaxmodem
# Required-Start:    $syslog $local_fs $network
# Required-Stop:     $syslog $local_fs $network
# Should-Start:      asterisk
# Should-Stop:       asterisk
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Software modem with IAX2 connectivity
# Description:       Use this software modem with Asterisk or another
#                    IPBX with IAX2 connectivity to send and receive
#                    faxes over VoIP.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/iaxmodem
DAEMON_OPTS=ttyIAX
NAME=iaxmodem
DESC=iaxmodem

test -x $DAEMON || exit 0

set -e

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/$NAME.pid \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  restart)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/$NAME.pid \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        sleep 1
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  status)
        if [ -s /var/run/$NAME.pid ]; then
            RUNNING=$(cat /var/run/$NAME.pid)
            if [ -d /proc/$RUNNING ]; then
                if [ $(readlink /proc/$RUNNING/exe) = $DAEMON ]; then
                    echo "$NAME is running."
                    exit 0
                fi
            fi

            # No such PID, or executables don't match
            echo "$NAME is not running, but pidfile existed."
            rm /var/run/$NAME.pid
            exit 1
        else
            rm -f /var/run/$NAME.pid
            echo "$NAME not running."
            exit 1
        fi
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|status}" >&2
        exit 1
        ;;
esac

exit 0

このまま書きました。

/etc/asterisk/iax.conf

[general]
bindport=4569
iaxcompat=yes
language=ja
bandwidth=medium
disallow=all
allow=ulaw
allow=alaw
allow=gsm
jitterbuffer=no
;dropcount=2
;maxjitterbuffer=500
;maxexcessbuffer=80
;minexcessbuffer=10
;jittershrinkrate=1
;tos=lowdelay
;mailboxdetail=yes

[iaxmodem]
type=friend
username=iaxmodem
secret=password
host=dynamic
disallow=all
allow=ulaw
allow=alaw
allow=gsm
requirecalltoken=no
context=fax-out

ほぼこのまま書いた。

/etc/iaxmodem/ttyIAX

device          /dev/ttyIAX
owner           uucp:uucp
mode            660
port            4570
refresh         300
server          127.0.0.1
peername        iaxmodem
secret          password
cidname         John Doe
cidnumber       8005551212
codec           slinear

peername iaxmodem
secret password
の行はiax.confと合わせるらしい。

# /etc/init.d/iaxmodem restart
Stopping iaxmodem: iaxmodem.
Starting iaxmodem: iaxmodem.
# ps -ef | grep iaxmodem

リスタートでチェック。

faxsetup

# /usr/sbin/faxsetup

---- 対話でほぼYES ↓だけ参考通りNOにした。 ----

Do you want to run faxaddmodem to configure a modem [yes]? no

/etc/hylafax/config.ttyIAX

CountryCode:            81
AreaCode:               50
FAXNumber:              +81.50.XXXX.XXXX
LongDistancePrefix:     0
InternationalPrefix:    001
DialStringRules:        etc/dialrules
ServerTracing:          0xFFF
SessionTracing:         0xFFF
RecvFileMode:           0600
LogFileMode:            0600
DeviceMode:             0600
RingsBeforeAnswer:      1
SpeakerVolume:          off
GettyArgs:              "-h %l dx_%s"
LocalIdentifier:        "050.XXXX.XXXX"
TagLineFont:            etc/lutRS18.pcf
TagLineFormat:          "From %%l|%c|Page %%P of %%T"
MaxRecvPages:           200
#
#
#
#
# Modem-related stuff: should reflect modem command interface
# and hardware connection/cabling (e.g. flow control).
#
ModemType:              Class1          # use this to supply a hint

#
# Enabling this will use the hfaxd-protocol to set Caller*ID
#
#ModemSetOriginCmd:     AT+VSID="%s","%d"

#
# If "glare" during initialization becomes a problem then take
# the modem off-hook during initialization, and then place it
# back on-hook when done.
#
#ModemResetCmds:        "ATH1\nAT+VCID=1"       # enables CallID display
#ModemReadyCmds:        ATH0

Class1AdaptRecvCmd:     AT+FAR=1
Class1TMConnectDelay:   400             # counteract quick CONNECT response

#
# If you have trouble with V.17 receiving or sending,
# you may want to enable one of these, respectively.
#
Class1RMQueryCmd:      "!24,48,72,96"  # enable this to disable V.17 receiving
Class1TMQueryCmd:      "!24,48,72,96"  # enable this to disable V.17 sending

#
# You'll likely want Caller*ID display (also displays DID) enabled.
#
ModemResetCmds:         AT+VCID=1       # enables CallID display

#
# The pty does not support changing parity.
#
PagerTTYParity:         none

#
# If you are "missing" Caller*ID data on some calls (but not all)
# and if you do not have adequate glare protection you may want to
# not answer based on RINGs, but rather enable the CallIDAnswerLength
# for NDID, disable AT+VCID=1 and do this:
#
#RingsBeforeAnswer: 0
#ModemRingResponse: AT+VRID=1

# Uncomment DATE and TIME if you really want them, but you probably don't.
#CallIDPattern:          "DATE="
#CallIDPattern:          "TIME="
CallIDPattern:          "NMBR="
CallIDPattern:          "NAME="
CallIDPattern:          "ANID="
#CallIDPattern:          "USER="        # username provided by call
#CallIDPattern:          "PASS="        # password provided by call
#CallIDPattern:          "CDID="        # DID context in call
CallIDPattern:          "NDID="
#CallIDAnswerLength:    4

番号系は自分に合わせる。


文字化けしてたので
TagLineFormat: “From %%l|%Y-%m-%d %T|Page %%P of %%T”
に変更した。

/etc/hylafax/sendfax.conf

MaxTries: 2
MaxDials: 2

リトライの設定。

# /etc/init.d/hylafax restart

hylafax再起動。

etc/hylafax/hfaxd.conf

#JobFmt:                "%-3j %3i %1a %6.6o %-12.12e %5P %5D %7z %.25s"
JobFmt:                 "%-5j %1a %-12.12e %5P %5D %Y %.27s"

TimeZone:               local

コメントアウトを消して、TimeZoneの追加。

/etc/asterisk/extensions.conf


[globals]
USEVOICEMAIL=YES
SPEAKINGCLOCK=317
ECHOTEST=333
MYNUMBER=05012345678

[default]
exten => 12345678,1,Dial(IAX2/iaxmodem)
exten => 12345678,n,Hangup

/*最後に*/
exten => _X.,1,Set(CALLERID(num)=${MYNUMBER})
exten => _X.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _0.,n,Dial(SIP/${EXTEN}@fusion-smart,300,T)
exten => _X.,n,Hangup

/etc/hylafax/FaxDispatch

SENDTO=aaaa@example.co.jp
FROMADDR=faxserver@example.co.jp
FILETYPE=pdf;

終了ー

/var/spool/hylafax/etc/FaxNotify

FROMADDR=faxserver@example.co.jp

参考サイトにはなかったけど、WINからFAXする時に送信通知のメールが迷惑メール落ちしてたので対策。

あとは『Winprint HylaFAX Reloaded』をWINにインストすれば印刷アクションからFAX可能。
その為に

faxadduser

でuser追加。

あとはIPと合わせて設定するのみ。
ありがとう御座いました。


おすすめのコンテンツ

広告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください