投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償)
logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)
The Document Foundation Wiki

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★
ラベル RasPBX の投稿を表示しています。 すべての投稿を表示
ラベル RasPBX の投稿を表示しています。 すべての投稿を表示

2019年9月1日日曜日

【RasPBX 04-04-2018】システムから管理者宛てにエラー通知メールが届く

RasPBX(04-04-2018)をRaspberry pi 2に導入した。
WEBインターフェイスに管理者ログインを済ませ、
またメールも送信できるようにした。

数日使用した後に、システムから大量のエラー通知メールを受信するようになった。
それまでは不具合は発生しなかった。



○不具合のきっかけ

数日使用していると次のような内容の通知メールがRasPBXシステムから管理者宛に届いた。
この管理者メールアドレスは、最初にRasPBXのWEBインターフェイスにアクセスした際に設定したものである。
SECURITY NOTICE:
:
framework has been automatically upgraded to fix security issues:
SEC-2018-001
セキュリティーの問題があったため勝手に更新が為されたらしい。
このRasPBXはLAN内に設置しインターネットから隔離しているので、
勝手にアップグレードはしてほしくなかった。
更新によって、不具合が発生することを心配するからである。

そして、心配していた通り、次のように問題が発生した。
(WEBインターフェイスで、administrator項目から自動更新しないようにも設定できるようである。)


○発生した問題

次のような内容の通知メールが管理者宛に大量に届くようになった。

一種類目(最初に1回だけだった)
PHP Fatal error: Class 'Symfony\Component\Lock\Store\SemaphoreStore' not found in /var/www/html/admin/libraries/BMO/Cron.class.php
on line 301

二種類目(最も多い通知メールで、数分おきに来た。)
UnexpectedValueException: The stream or file "/var/log/asterisk/freepbx.log" could not be opened: failed to open stream: Permission denied in file /var/www/html/admin/libraries/Composer/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
on line 107

三種類目(二つ目のメールが20通に対して1通くらいの割合で来た。)
PHP Fatal error: Class 'cronmanager' not found in /var/lib/asterisk/bin/freepbx-cron-scheduler.php on line
10
Whoops\Exception\ErrorException: Class 'cronmanager' not found in file /var/lib/asterisk/bin/freepbx-cron-scheduler.php
on line 10

○対処

とりあえず、大量にやってくる二つ目の通知メール記載のエラー情報に記載内容から、
ログファイル(/var/log/asterisk/freepbx.log)の所有者を調べた。

root@raspbx:~# ls /var/log/asterisk/ -all
total 936
drwxrwxr-x 5 asterisk asterisk   4096 Apr  6  2018 .
drwxr-xr-x 8 root     root       4096 Aug 21 06:25 ..
drwxrwxr-x 2 asterisk asterisk   4096 Sep 12  2017 cdr-csv
drwxrwxr-x 2 asterisk asterisk   4096 Sep 12  2017 cdr-custom
drwxrwxr-x 2 asterisk asterisk   4096 Sep 12  2017 cel-custom
-rw-r--r-- 1 root     root       1522 Aug 21 11:24 freepbx.log
-rw-r--r-- 1 asterisk asterisk 929369 Aug 21 11:28 full
-rw-r--r-- 1 asterisk asterisk    114 Aug 21 11:24 queue_log

rootが所有者になっているため、アクセスができないのだろうと考えた。
そこで、他のファイルの所有者に倣って、所有者を変更した。

root@raspbx:~# chown asterisk:asterisk /var/log/asterisk/freepbx.log


修正後、所有者の確認をした。

root@raspbx:~# ls /var/log/asterisk/ -all
total 936
drwxrwxr-x 5 asterisk asterisk   4096 Apr  6  2018 .
drwxr-xr-x 8 root     root       4096 Aug 21 06:25 ..
drwxrwxr-x 2 asterisk asterisk   4096 Sep 12  2017 cdr-csv
drwxrwxr-x 2 asterisk asterisk   4096 Sep 12  2017 cdr-custom
drwxrwxr-x 2 asterisk asterisk   4096 Sep 12  2017 cel-custom
-rw-r--r-- 1 asterisk asterisk   1522 Aug 21 11:24 freepbx.log
-rw-r--r-- 1 asterisk asterisk 929765 Aug 21 11:28 full
-rw-r--r-- 1 asterisk asterisk    114 Aug 21 11:24 queue_log
これによって、大量にやって来ていた二種類目の通知メールはぴたっと来なくなった。

しかし、三種類目の通知メールはまだやって来た。


そこで、システムのアップグレードを行った。

root@raspbx:~# raspbx-upgrade

すると、三種類目のメールも一切発信されることがなくなった。


2019年8月17日土曜日

【RasPBX 04-04-2018】簡易なメールソフトssmtpを導入してメールを送信できるようにした【ssmtp】


raspbx-04-04-2018 でメールを送信できるように設定した。

デフォルトの状態では、exim4というメールサーバーソフトが入っていた。
しかし、ここではこれを削除して、簡易なメール送信ソフトウェア(ssmtp)を導入した。
ssmtpは、設定ファイルにリレー先のSMTPサーバアドレスを指定すると使える。


■exim4の削除とssmtpのインストール

もともと入っているメール関連ソフトウェアexim4を削除した。
root@raspbx:/# apt-get remove exim4

簡易軽量のssmtpをインストールした。
root@raspbx:/# apt-get install ssmtp

サーバーが見つからないなどというエラーが発生したが、
apt-get update を実行した後で再びインストールを試みると解消された。


■ssmtpの設定

オリジナル設定ファイルのバックアップをとった。
root@raspbx:/# cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.org

リレー用のメールサーバーを指定した。
root@raspbx:/# nano /etc/ssmtp/ssmtp.conf

以下の例では、認証不要のsmtpサーバーの25番ポートに接続する設定を行っている。
認証が必要な場合、25番以外の設定も可能である。

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.example.com
# Where will the mail seem to come from?
#rewriteDomain=
# The full hostname
hostname=raspbx
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES


■メール送信テスト

root@raspbx:/# echo testtest | sendmail -f from@example.com to@example.com

送信後にログを確認した。
root@raspbx:/# tail /var/log/mail.info 
Aug 16 16:09:48 raspbx sSMTP[1245]: Sent mail for root@raspbx (221 2.0.0 Bye) uid=0 username=root outbytes=248

また、送信先において確かにメールを受信することができた。



<参考>
・Ubuntu 環境で sSMTP を利用して Gmail を送信してみる
< https://qiita.com/chikoboo/items/77d0030c49e0d8b7fd4f > 2019年8月15日

・"404 not found" error
< https://www.raspberrypi.org/forums/viewtopic.php?t=198032 > 2019年8月16日

2018年5月31日木曜日

【FreePBX 13.0.190.11】VOIPゲートウェイとしての設定/SIP端末ごとに発着信の外線番号を区別する【RasPBX raspbx-03-12-2017】【Raspberry Pi 2】


環境は、RasPBX raspbx-03-12-2017 である。


■設定の概要

外線←[VOIP Gateway] ← [RasPBX] ← [SIP Phones]

RasPBX を上記の位置で、次のように用いたい。
RasPBX は、上流の VOIP Gateway にレジストし、着信を受ける。
下流にある SIP Phone は、RasPBX にレジストして、さらにその着信を受ける。
つまり、外線から着信があると、RasPBX を経て、SIP Phones に着信するようにしたい。
また、これらの SIP Phones から RasPBX 、VOIP Gateway を経て発信したい

外線電話番号は複数ある。
それぞれの外線番号に着信があれば、外線ごとに関連付けたSIP Phoneが着信するようにする。
また、逆も、各SIP Phoneが発信するとき関連付けた電話番号で発信するようにする。

VOIP Gatewayは、外線番号ごとにRasPBXがレジストできるようアカウントを備えているものとする。
VOIP Gatewayで外線番号に着信があれば、レジストしているRasPBX内のSIPデバイスが応答する。

そこで次のように、RasPBXを設定する。



■RasPBXでの設定

以下では、例として、トランク(外線)、エクステンションを一対一で紐づけしている。
複数の外線番号があってもこれらの一連の設定を並列させれば良い。

設定が完了すれば、「Apply Config」ボタンを押して設定を有効にするのを忘れないこと。


○「Extensions」(内線)の設定
RasPBXにおいて、SIP Phoneのためのアカウントを作成する。

RasPBX のWEBコントロール画面にログインし、
画面上部に並ぶ設定項目の「Applications」から、「Extensions」を開く

下記の手順で、SIP Phoneごとにアカウントを作成する。

「+ Add Extension」を押しメニューから「+ Add New Chan_SIP Extension」を選択する。
 そして、開いた画面で、次の項目を設定する。

<General タブ>
User Extension ←内線番号(Outbound Routes の設定でも使用する。)
yyy101
Display Name ←発信者の名称(番号ではない)
exten-0xxxxxyyy1
Outbound CID ←外線電話番号(Trunkに発信される場合、そのTrunkに登録したCallerIDを上書きする)
0xxxxxyyy1
Secret ←パスワード(このアカウントを使用するSIP端末の認証)


○「Trunk」(外線接続)の設定
上流 VOIP Gateway の外線番号アカウントへの接続情報を作成する。

RasPBX のWEBコントロール画面にログインし、
画面上部に並ぶ設定項目の「Connectivity」から、「Trunks」を開く

「+ Add Trunk」を押しメニューから「+ Add SIP Trunk」を選択する。

<General タブ>
Trunk Name ←トランク名
trunk-0xxxxxyyy1
Outbound CallerID ←外線電話番号
0xxxxxyyy1
<Dial Number Manipulation Rules タブ>

ここでは設定しない。後で設定する「Outbound Routes」でパターンマッチングによりトランクを指定する。

<sip Setting タブ>  (※)各パラメーターの値の説明は下に記した。
<Outgoing>
Trunk Name ←トランク名(一意であること。内部で使用される。)
trunk-0xxxxxxxx1
PEER Details ←例えば次のように設定する。
host=192.168.1.20
fromuser=0xxxxxyyy1
username=0xxxxxyyy1
type=friend
insecure=invite,port
host は、上流のVOIP Gatewayのアドレスを指定する。

<Incoming>
USER Context
0xxxxxyyy1
USER Details
context=from-sip-trunk-0xxxxxyyy1
Register String ←レジスト情報(着信先エクステンション)
0xxxxxyyy1@192.168.1.20/0xxxxxyyy1

(※)「パラメーター説明」

0xxxxxyyy1 は、外線番号である。

context は、着信時に呼が流れていくコンテクストである。

Register String は、上流 VOIP Gateway にレジストするための情報を設定する。
次の書式で入力する。

(@よりも前の部分の書式)
ユーザ名@ ←パスワードなしの場合
ユーザ名:パスワード@
ユーザ名:パスワード:認証ユーザ名@ ←認証ユーザ名が別になっている場合

(@よりも後ろの部分の書式)
@サーバーアドレス/着信先エクステンション

上記の場合、from-sip-trunk-0xxxxxyyy1 コンテキストの、0xxxxxyyy1 エクステンションに着信することになる。
これらは、RasPBXの内部の動作で使用されるものである。



○「Inbound Routes」(着信先端末)の設定
上記のトランクで設定した外線からの着信時、どのSIP Phone に着信させるか設定する。

RasPBX のWEBコントロール画面にログインし、
画面上部に並ぶ設定項目の「Connectivity」から、「Inbound Routes」を開く。

「+ Add Inbound Routes」を押す。

<General タブ>
Description ←このインバウンド設定についての説明
in-0xxxxxyyy1
DID Number ←外線番号(トランクで設定した外線番号)
0xxxxxyyy1
Set Destination
==choose one== のドロップダウンリストから、Extensions を選択し、設定済みの Extension をリストから、着信させるSIP端末を選択する。


○「Outbound Routes」(外線の選択方法)の設定
ダイヤルパターン、発信元のSIP Phone内線番号に応じて、トランク(上記で外線を登録ししたもの)を選択する。

RasPBX のWEBコントロール画面にログインし、
画面上部に並ぶ設定項目の「Connectivity」から、「Outbound Routes」を開く。

<Route Settings>
Route Name
out-0xxxxxyyy1
Route CID
0xxxxxyyy1
Trunk Sequence for Matched Routes
trunk-0xxxxxyyy1

<Dial Patterns>
ダイヤルパターンを2行入力できるように、右端「+」ボタンを一度押す。
match pattern ←例えば、次のように二パターン設定しておく。(1から始まる3桁の特殊番号、0から始まる任意の長さの通常の電話番号にマッチする。)
1XX
.0
/ CallerID ←発信元内線番号で、一致するときのみこのトランクで発信するようになる。(上記、2パターンそれぞれにおいて指定しておく。)
yyy101


設定が完了すれば、「Apply Config」ボタンを押して設定を有効にするのを忘れないこと。

2018年3月31日土曜日

【RasPBX raspbx-03-12-2017】ip6tablesで設定するルールをシステム起動時にも反映させる【Raspberry Pi 2】


raspbx-03-12-2017.img で導入したRasPBXで、
iptables/ip6tablesで設定したルールをシステム再起動後にも継続させるために、
iptables-persistent パッケージを導入しようとしたところ、エラーが発生した。

# apt-get install iptables-persistent
(省略)
Unpacking netfilter-persistent (1.0.3+deb8u1) ...
Selecting previously unselected package iptables-persistent.
Preparing to unpack .../iptables-persistent_1.0.3+deb8u1_all.deb ...
Unpacking iptables-persistent (1.0.3+deb8u1) ...
Processing triggers for systemd (215-17+deb8u6) ...
Processing triggers for man-db (2.7.0.2-5) ...
Setting up netfilter-persistent (1.0.3+deb8u1) ...
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
A dependency job for netfilter-persistent.service failed. See 'journalctl -xn' for details.
invoke-rc.d: initscript netfilter-persistent, action "start" failed.
dpkg: error processing package netfilter-persistent (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of iptables-persistent:
 iptables-persistent depends on netfilter-persistent (= 1.0.3+deb8u1); however:
  Package netfilter-persistent is not configured yet.
dpkg: error processing package iptables-persistent (--configure):
 dependency problems - leaving unconfigured
Processing triggers for systemd (215-17+deb8u6) ...
Errors were encountered while processing: netfilter-persistent iptables-persistentE: Sub-process /usr/bin/dpkg returned an error code (1)


■別の方法でシステム起動の際に自動的にIPフィルタルールを追加するようにした。

○適当な名前でルールを設定するスクリプトを作成した。
root@raspbx:~# nano /etc/ip6table.setting
/sbin/ip6tables -F
/sbin/ip6tables -P INPUT DROP
/sbin/ip6tables -P FORWARD DROP
/sbin/ip6tables -P OUTPUT ACCEPT
/sbin/ip6tables -A INPUT -i lo -j ACCEPT
/sbin/ip6tables -A INPUT -i eth0 -m state --state ESTABLISHED -j ACCEPT
/sbin/ip6tables -A INPUT -i eth0 -m state --state RELATED -j ACCEPT
/sbin/ip6tables -A INPUT -s fe80::/64 -p ipv6-icmp -m icmp6 --icmpv6-type 135 -j ACCEPT
/sbin/ip6tables -A INPUT -s fe80::/64 -p ipv6-icmp -m icmp6 --icmpv6-type 136 -j ACCEPT
/sbin/ip6tables -A INPUT -s fe80::/64 -j ACCEPT
○作成したスクリプトを実行できるようにした。
root@raspbx:~# chmod +x /etc/ip6table.setting

○問題なく実行できるか確認した。
root@raspbx:~# /etc/ip6table.setting

○起動時に実行されるrc.localファイルにスクリプトファイルのパスを追加した。
root@raspbx:~# nano /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Setting ip6tables rules
/etc/ip6table.setting 

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
exit 0

以上

2018年3月29日木曜日

【RasPBX raspbx-03-12-2017】完全バックアップを作成する方法(オンラインフォルダに差分データのみ転送する方法)【Raspberry Pi 2】



<転送先マシンでの設定>

○バックアップ保存先にするオンライン共有フォルダの準備

バックアップ保存先別マシンに、SAMBAを使って共有フォルダを作成した。
共有名は SHARE とし、BACKUPというサブフォルダを作成した。

ネットワーク経由で、問題なくこの共有フォルダにアクセスできることを確認した。
SAMBAユーザー名「sambauser」で書き込みができるようにした。 後で使用する。


○バックアップの核となるRasPBXのimgファイルをダウンロード

差分のみを転送するため、その核となるimgファイルを転送先に保存しておく。

# wget http://download.raspberry-asterisk.org/raspbx-03-12-2017.zip
# unzip raspbx-03-12-2017.zip
# ls -all
total 4690868
drwxr-xr-x 2 root root       4096 Mar 23 23:47 .
drwxr-xr-x 3 root root       4096 Mar 23 23:22 ..
-rw-r--r-- 1 root root 3904897024 Dec  3 03:30 raspbx-03-12-2017.img
-rw-r--r-- 1 root root  898532430 Dec  4 01:35 raspbx-03-12-2017.zip


<転送元であるRasPBXでの設定>

○rsyncをインストールしておく。

root@raspbx:~# apt-get install rsync


○上記で用意したオンライン上の共有フォルダを /mnt にマウントした。

マウントを行う。 (リモートマシンのファイル共有をマウント)
root@raspbx:~# mount -t cifs -o user=sambauser,password=PAssWoRD "//192.168.1.10/SHARE" /mnt/

マウントできたか確認した。
root@raspbx:~# ls /mnt
BACKUP
root@raspbx:~# ls /mnt/BACKUP/
raspbx-03-12-2017.img  raspbx-03-12-2017.zip
以上のように、リモートのファイル共有にアクセスできている。
差分バックアップの核にするimgファイルが見えている。


ファイル名の変更(バックアップだとわかるようにした。)

root@raspbx:~# cd /mnt/BACKUP/
root@raspbx:/mnt/BACKUP# mv raspbx-03-12-2017.img raspbx-backup.img

raspbx-backup.img を差分バックアップのための核となるファイルとする。

また、ここでパーミッションのエラーが出ずに、書き込みが成功するか確認できる。


○バックアップの開始

不意なSSH接続の切断に備えて、仮想端末のtmuxなどで動作させる。
なければ、apt-get install tmux で導入しておく。

仮想端末を起動した。
root@raspbx:/mnt/BACKUP# tmux

バックアップを開始した。
root@raspbx:/mnt/BACKUP# raspbx-backup raspbx-backup.img

差分の内容によるが、このときは、2.5GB程度のデータが転送された。


○バックアップ完了後はアンマウントしておく

root@raspbx:/mnt/BACKUP# cd /
root@raspbx:/# umount /mnt



<リストアの方法>

RasPBXが故障するなどして、リストアしなければならない場合、
以上で作成した、raspbx-backup.imgをddコマンドでSDカードへの書き込んで復元する。


新品価格
¥5,940から
(2018/3/29 23:00時点)

<参考>
・Backup your System
< http://www.raspberry-asterisk.org/documentation/backup-your-system/ > 2018年3月23日

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad