NEWS
IBM i 技術解説 IBM i 技術解説
2023.04.07
SHARE
  • twitter
  • facebook
  • hatena

【IBM Power Salon】松沢書店様が語る
「IBM i エンジニア不在でもDXはできる」実践編 その2

【IBM Power Salon】松沢書店様が語る<br />「IBM i エンジニア不在でもDXはできる」実践編 その2
【IBM Power Salon】松沢書店様が語る<br />「IBM i エンジニア不在でもDXはできる」実践編 第2回:Postfix+Gmail+SaMMA+nextcloudでメールの添付ファイルをWEBストレージで共有する。

日本アイ・ビー・エム株式会社が毎月開催しているIBM Powerユーザーのための自由な語り場「IBM Power Salon」(月1回、第二水曜日の朝9時から開催)をご存じでしょうか?
https://www.ibm.com/blogs/systems/jp-ja/ibm-power-salon/

2022年12月14日に開催された第13回の、株式会社 松沢書店様による「IBM i エンジニア不在でもDXはできる」では、既存IBM i環境を見事に活用し、DXを実現された素晴らしい事例が披露されました。
https://video.ibm.com/recorded/132400405

とはいえ、1時間の講演時間では語りきれなかった詳細は、きっと他のIBM i ユーザーの方にも参考になるはず!ということで、松沢書店 システム部部長の山口様に課題解決の方法について具体的に解説いただきます。

今回は、IBM i から出される納品伝票をスケジュールに従い複数顧客に送信する際の課題解決の第二回目として、password付ZIPファイルの送受信を禁止している顧客に対して、OSSを活用して、送信メールに添付があればWebストレージにアップし、WebストレージのURLとログインpasswordが記載されたメールをかわりに宛先に送る方法について解説頂きます。

第2回:Postfix+Gmail+SaMMA+nextcloudでメールの添付ファイルをWEBストレージで共有する。

株式会社松沢書店
システム部
山口 昌一

目的と概要

第1回ではIBM iからPostfixを経由して安全にメールを送信する方法をお伝えしました。今回はそこに2つのサービスSaMMA(メール安全化ソフト)とnext cloud(オンラインストレージ)を追加し、添付ファイルのあるメールを自動的にnext cloudにアップし、送り先にはnext cloudのURLとそのファイルをダウンロードするためのパスワードを送信する仕組の作成方法を解説致します。
(※第2回は全てLinuxの設定になります。)


▲図1. 弊社環境、メールサーバーとWEBサーバーを別に構築


▲図2. 今回の設定 1台のサーバーにメールサーバーとWEBサーバーを設定

1. next cloudとは

next cloudはDropboxのようなオンラインストレージを構築できるオープンソースソフトウェアです。

画面のイメージは図の様になり、ブラウザでファイルを簡単に管理できる非常に便利なソフトで、オンラインミーティングやチャットも可能です。

1-1. next cloudをインストールする

環境
CentOS Stream release8 GUI無し
PHP 8.1.17(next cloudの最新版(2023/3現在、PHP8.0、PHP8.1が推奨になります。
またPHPのバージョンによってnext cloudのインストール出来るバージョンが変わってきますので公式をご確認下さい。弊社実環境はPHP 7.2.24、next cloud 20.0.0です。)
next cloud 25.0.5
Apache 2.4.37
mysql 8.0.26

1-2. Nextcloudインストールの準備

next cloudは機能が豊富ですので、それを使用できる様にphpのモジュールを追加していきます。

ImageMagik(画像処理)は通常のリポジトリには無いのでepel,powertoolsを有効にしてインストールします。以下実行

dnf --enablerepo=powertools,epel -y install php-pear php-mbstring php-pdo
php-intl php-gd php-pecl-zip php-mysqlnd php-bcmath php-gmp php-opcache
php-pecl-apcu php-devel ImageMagick ImageMagick-devel make

以下実行

pecl install imagick

上記実行で

configuration option “php_ini” is not set to php.ini location
You should add “extension=imagick.so” to php.ini
「php.ini の場所に設定されていません「extension=imagick.so」を追加する必要があります。」
と表示されますので

echoで出力した文字を追記リダイレクト>>して書き込んでおきます。

echo 'extension=imagick.so' >> /etc/php.ini

nextcloud用にPHPの設定をします。今回の設定はphp-fpmを使用します。php-fpmはFastCGIです。FastCGIはアプリケーションをWebサーバーとは別のプロセスで実行します。他にはモジュール版があります。

nextcloud.confを新規に作成します。

vi /etc/php-fpm.d/nextcloud.conf

以下設定memoryやsizeはサーバーSPECに応じて変更してください。

[nextcloud]
user = apache
group = apache

listen = /run/php-fpm/nextcloud.sock
listen.acl_users = apache
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[max_execution_time] = 3600
php_value[memory_limit] = 2G
php_value[post_max_size] = 2G
php_value[upload_max_filesize] = 2G
php_value[max_input_time] = 3600
php_value[max_input_vars] = 2000
php_value[date.timezone] = Asia/Tokyo

php_value[opcache.enable] = 1
php_value[opcache.memory_consumption] = 128
php_value[opcache.interned_strings_buffer] = 8
php_value[opcache.max_accelerated_files] = 10000
php_value[opcache.revalidate_freq] = 1
php_value[opcache.save_comments] = 1

1-3. MySQLの設定

MySQLにnextcloud用のユーザーとDBを作成する。

MySQLに接続

mysql -u root -p

データベース「nextcloud」を作成

create database nextcloud;

確認

show databases;

ユーザーを作成、今回はローカル192.168.41.0/24でアクセスできる様にします。また、GRANT OPTION(権限を付与する権限)も付与しておきます。これをしないとnextcloudのadminユーザー作成時に、そのユーザーに権限を付与出来ず初期設定が出来ない状況に陥ります。

CREATE USER 'nextcloud'@'192.168.41.%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'nextcloud'@'192.168.41.%' WITH GRANT 
OPTION;
flush privileges;

‘password’部分は任意のパスワードに変更してください。IPアドレスも環境にあわせて変更してください。

1-4. Apacheにnextcloudの設定を書く

以下にnextcloud.confを新規作成します。

vi /etc/httpd/conf.d/nextcloud.conf

以下は/nextcloudでアクセス時にphp-fpmで動かす設定になります。

Timeout 3600
ProxyTimeout 3600

Alias /nextcloud "/var/www/nextcloud/"
<Directory "/var/www/nextcloud">
  Options FollowSymLinks
  AllowOverride All
  Require all granted

  <FilesMatch \.(php|phar)$>
    SetHandler "proxy:unix:/run/php-fpm/nextcloud.sock|fcgi://localhost"
  </FilesMatch>
</Directory>

設定を書いたのでphp-fpmを再起動しておきます。この後もろもろ設定後動かないというときは再度再起動してみてください。

systemctl restart php-fpm

1-5. nextcloudをダウンロードしてインストールする

最新版を確認します。
https://download.nextcloud.com/server/releases/
上記サイトで最新版を確認して下さい。

ダウンロードします。オプション-Pはダウンロード先を指定です。

wget https://download.nextcloud.com/server/releases/ nextcloud-25.0.5.zip -P /var/www/

展開します。オプション-dは展開先です。

unzip /var/www/nextcloud-25.0.5.zip -d /var/www/

ディレクトリnextcloud全体のオーナーをオプション-Rをつけて設定します。

chown -R apache. /var/www/nextcloud

Apacheを再起動します。

systemctl restart httpd

1-6. SELinuxの設定

SELimuxとはSecurity-Enhanced Linuxでセキュリティ制御のモジュールです。CentOSをインストールすれば動いているはずです。

状態を確認します。

getenforce

結果がEnfocingの場合は次の設定をします。そうでない場合は設定を飛ばして下さい。

setsebool -P httpd_can_network_connect on
setsebool -P httpd_unified on
setsebool -P httpd_execmem on

SELinuxのポリシーファイルを新規作成します。拡張子teはType Enforcementです

vi nextcloud.te

以下内容。

module nextcloud 1.0;

require {
        type configfs_t;
        type httpd_t;
        class dir getattr;
}

#============= httpd_t ==============
allow httpd_t configfs_t:dir getattr;

作成したモジュールをコンパイルします。

checkmodule -m -M -o nextcloud.mod nextcloud.te

ポリシーパッケージの作成

semodule_package --outfile nextcloud.pp --module nextcloud.mod

カーネルへのモジュール読み込み

semodule -i nextcloud.pp

1-7. ブラウザで初期設定する

今回の設定はGUI環境が無いので、クライアントPCからサーバーにアクセスします。

ブラウザでアクセスします。IPは適宜変更してください。
https://192.168.41.5/nextcloud

最初のアクセスでは以下の画面が表示されます。ユーザー名は任意で管理者のユーザー、パスワードを入力してください。
データフォルダはデフォルトのまま、データベースは「MySQL/MariaDB」を選択して下さい。1-3で設定したMySQLのデータベースのユーザー名、その際作成したパスワードを入力して下さい。データベースのホストはサーバーのIPとポートになります。
インストールをクリックするとインストールが始まりますので暫く待つと完了になります。

2. SaMMAとは

デージーネットが作成したメールの添付ファイルを自動的に安全化するOSSです。


▲図3. SaMMAの仕組み

添付ファイル付きメールを、SaMMAのインストールされたメールサーバーを経由して送信すると、添付ファイルをnextcloudにアップし、そのURLとアクセスのためのパスワードを送信先に送ります。メールを受け取ったクライアント(送信先)は記載のURLとパスワードを使用してダウンロードすることが可能です。簡単な設定でこのクライアントはそのまま送る。このクライアントはダウンロードしてもらうなども可能です。nextcloudの設定を追加することで、一定期間でファイルを削除することも可能になります。

2-1. SaMMAのインストール準備

SaMMAに必要なパッケージをインストールします。このあとソースからインストールしないといけないパッケージもあるため、それ用のパッケージも含みます。

dnf install -y python36 sendmail libdb-devel openldap-devel libspf2-devel glib2-devel

メールを振り分けるフィルターをインストールします。

dnf --enablerepo=powertools install -y sendmail-milter-devel

公式よりCentOS6、CentOS8では、GMimeをソースからインストールする必要があります。との記載がありますのでソースからインストールしていきます。

libgpg-errorをインストールします。
/usr/local/srcに移動してダウンロードして解凍してインストールしているだけです。 make -j 8はコンパイルが速くなるオプションです。メッセージが大量に出てインストールされているのか良くわからない状況になりがちですが最後のメッセージにエラーが出てなければインストール出来ています。

cd /usr/local/src
wget https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.46.tar.bz2
tar xvjf  libgpg-error-1.46.tar.bz2
cd libgpg-error-1.46
./configure
make -j 8
make install

gmimeをインストールします。

cd /usr/local/src
wget https://download.gnome.org/sources/gmime/2.6/gmime-2.6.23.tar.xz
tar xvJf gmime-2.6.23.tar.xz
cd gmime-2.6.23
./configure
make 
make install

環境によっては以下のエラーが出る場合があります。

rm: cannot remove ‘libtoolT’: No such file or directory

その場合はconfigureファイルの中身を検索し
$RM “$cfgfile”
$RM -f “$cfgfile”に変更してください。
2か所くらいです。
また、モジュールが足りないなどのエラーが出たら適宜dnfでインストールしてください。(Cent8stream環境では真っ新の状態で始めておりますので、1から順にインストールすればエラーは出ない想定です。)

postfixのsendmailを使う様にします。実行後選択画面が表示されますのでpostfixの方の番号を入力しEnterして下さい。再度コマンドを実行し+が付いてる方が選択されています

alternatives --config mta

2-2. SaMMAをインストールする

SaMMAの最新版を確認します。
https://ja.osdn.net/projects/samma/releases/

SaMMAをダウンロードします。ディレクトリに移動しておきます。

cd /usr/local/src

ダウンロードします。

wget https://ja.osdn.net/dl/samma/SaMMA-5.0.3.tar.gz

展開します。

tar -zxvf SaMMA-5.0.3.tar.gz

展開されたディレクトリに移動します。

cd SaMMA-5.0.3

以下を1行ずつ実行していきます。OSに合わせたmakefileを作っています。

autoreconf --install
autoheader
libtoolize
aclocal
automake --add-missing --copy
autoconf
./configure --with-gmime=/usr/local/ --enable-subjectsw

インストールします。

make
make install

無事にインストールできていると
/usr/local/etcにディレクトリsammaが出来ています。

権限を付与します。

chmod -R 755 /usr/local/etc/samma

2-3. Postfix設定

SaMMAを使用するための設定を書いていきます。

vi /etc/postfix/main.cf

以下内容。main.cfの最終行に追加しておきます。

#SaMMA
smtpd_milters = inet:127.0.0.1:20026
milter_default_action = reject

ポート20026を開けておきます。

firewall-cmd --zone=public --add-port=20026/tcp --permanent
firewall-cmd --reload

postfixを再起動しておきます。

systemctl reload postfix

2-4. SaMMAの設定を書く

各種設定ファイルの見本がdefaultとしてありますので、全部コピーして新しいものを作ります。

cp /usr/local/etc/samma/samma.conf.enc.default /usr/local/etc/samma/samma.conf
cp /usr/local/etc/samma/os_uploader.conf.default /usr/local/etc/samma/os_uploader.conf
cp /usr/local/etc/samma/os_uploader.tmpl.default /usr/local/etc/samma/os_uploader.tmpl
cp /usr/local/etc/samma/samma.tmpl.default /usr/local/etc/samma/samma.tmpl
cp /usr/local/etc/samma/errmsg.tmpl.default /usr/local/etc/samma/errmsg.tmpl
cp /usr/local/etc/samma/sender.default /usr/local/etc/samma/sender
cp /usr/local/etc/samma/rcpt.default /usr/local/etc/samma/rcpt

SaMMA confを編集します。

vi /usr/local/etc/samma/samma.conf

以下内容

CommandPort=17777
CommandPass=secret
SyslogFacility=local1
ListenIP=127.0.0.1
ListenPort=20026
EncryptionTmpDir=/tmp
ZipCommand=/usr/local/bin/os_uploader
SenderDB=btree:/usr/local/etc/samma/sender.db
RcptDB=btree:/usr/local/etc/samma/rcpt.db
#ExtensionDB=btree:/usr/local/etc/samma/extension.db
TemplatePath=/usr/local/etc/samma/samma.tmpl
ErrorMessageTemplatePath=/usr/local/etc/samma/errmsg.tmpl
SendmailCommand=/usr/sbin/sendmail -i
ZipfileName=AttachFile.%Y%m%d.txt
ZipAttachmentContentType=text/plain
MailsaveTmpDir=/tmp
PasswordLength=10
StrCode=SJIS
DefaultEncryption=no
UserPolicy=no
#LdapUri=ldap://127.0.0.1:389/
#LdapBaseDn=ou=User,dc=inside,dc=designet,dc=jp
#LdapBindDn=cn=Manager,dc=designet,dc=jp
#LdapBindPassword=secret
#LdapFilter=mail=%s
WhitelistPath=/usr/local/etc/samma/whitelist
AttachmentFileAlias=UnknownFileName
LoopCheck=no
AllowCharEnvelopeFrom=
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY
Z0123456789`~!@#$%^&*()_+-={}|[]:";'<>?,./

注意点
ZipCommand=/usr/local/bin/os_uploader ← このあと設定するos_uploader
ZipfileName=AttachFile.%Y%m%d.txt ← 拡張子をtxtにします。これは送信されるURL、PASSが添付ファイルとしてtxtで送信されるためです。
ZipAttachmentContentType=text/plain ← 追加します。
PasswordLength=10 ← パスワード長さを10桁にします。nextcloudの共有時のパスワードのデフォルトの長さが10のため直しておかないとアップロードできません。ご注意下さい。

アップローダのconfを編集します。

vi /usr/local/etc/samma/os_uploader.conf

以下内容

NC_URL=https://localhost/nextcloud
NC_ADMIN=admin
NC_ADMINPW=password
HTTPS_CERT=False
TEMPLATE_FILE=/usr/local/etc/samma/os_uploader.tmpl

NCはnextcloudです。NextcloudのあるサーバーのURLを指定してください。 1-7で指定したユーザー名、パスワードを指定してください。 ローカル環境でWEBのSSLを行っていない場合はHTTPS_CERT=FALSEを指定してください。外に出しておりWEBをSSL化している場合はTRUEにします。
URL末尾にスラッシュを入れないで下さい。

SaMMA起動スクリプトを作成します。

vi /usr/lib/systemd/system/samma.service

以下内容

[Unit]
Description=SaMMA (SAfety Mail gateway with Milter Api)

[Service]
ExecStart=/usr/local/bin/samma
Restart=always

[Install]
WantedBy=multi-user.target

どこから送られたメールは安全化するかの設定をします。
senderを編集します。

vi /usr/local/etc/samma/sender

以下内容、例えば送信者が○○○.co.jpの場合は安全化の場合になります。 localhostは必須です。SaMMAのある場所のなのでこれを書かないと何も安全化してくれません。

# Sender Policy Settings
#
# Attached file(s) of an e-mail sent from e-mail address
# written here is encrypted.
#
# *** Format ***
# mailaddress@domain
# domain
〇〇〇.co.jp
localhost

どこに送るメールは安全化するのかの設定をします。

vi /usr/local/etc/samma/rcpt

以下内容、〇〇.jp宛てに送るものを安全化する設定です。com等を追加する場合は下の行に増やしていきます。

# Recipient Policy Settings
#
# Attached file(s) of an e-mail sent to e-mail address
# written here is encrypted.
# The password of each e-mail address can be set.
#
# *** Format ***
# mailaddress@domain [password]
# domain [password]
jp

rcptはmakeする必要がありますので
/usr/local/etc/samma/に自分がいるかをpwdで確認します。いなければ

cd /usr/local/etc/samma

makeします。sender.dbとrcpt.dbが作成or更新されます。

make

samma.tmplが文字化けしてるので対処します。
Network kanji filterをインストールします。

dnf --enablerepo=powertools install nkf

一旦ホームに戻ります。

cd

ホームでsamma.tmplを文字化けの無い状態で作ります

nkf -w /usr/local/etc/samma/samma.tmpl > samma.tmpl

編集します。

vi samma.tmpl

以下内容3-5行目を追記しておきます。

To: <@@TOADDR@@>
Subject: パスワード通知メール
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0

以下のメールに添付されたファイルの解凍パスワードをお知らせします。

件名: <@@SUBJECT@@>
日付: <@@DATE@@>
パスワード: <@@PASSWORD@@>

受信者
<@@RCPTLIST@@>

添付ファイル名
<@@FILENAME@@>

修正したものを元のディレクトリに戻してホームのsamma.tmplは削除しておきます。

nkf --ic=UTF-8 --oc=ISO-2022-JP -x -m0 samma.tmpl > 
/usr/local/etc/samma/samma.tmpl ; rm -f samma.tmpl

2-5. 起動、ログ確認

起動

systemctl start samma

SaMMA自動起動設定

systemctl enable samma

ログは以下に書きだされます。

tail /var/log/messages

samma[108269]: whilelist_read: Cannot open file.(/usr/local/etc/samma/whitelist)
恐らく上記エラーが出るかと思います。Whitelistが無い。
エラー解消のため空のwhitelistを作ります。

touch /usr/local/etc/samma/whitelist

2-6. nextcloudにユーザーを追加

nextcloud側に送信者のアドレスが無いとエラーになります。送信者は第1回でpostfixで作成したsender_mapsに記載したアドレスになります。

そのアドレスでユーザーを作成します。

https://192.168.41.5/nextcloud

adminユーザーでログインしてください。
右上Aの箇所を触るとメニューが出ますので「ユーザー」をクリックします。

新しいユーザーをクリックします。

ユーザーを追加していきます。第一回postfixを踏まえると、上から

  • test
  • test
  • パスワード
  • test@○○○

になります。

入力したら「新しいユーザーを追加」をクリックします。

2-7. 確認

確認は結構手間がかかるので、mail.vbsというスクリプトを書いて確認します。

mil.vbsをクライアントPC(Windows)で作成して、中身に以下を書きます。
途中C:\mail\というフォルダが出てきますので、Cドライブ直下にmailというフォルダを作成し「メール本文.txt」と「text.txt」を作っておきます。本文と添付ファイルになります。Cドライブ直下が嫌な場合は適当なパスに変更して下さい。
またIPの指定がありますので、Postfixの入ってるサーバーのIPを指定してください。

Option Explicit

Const useLocalSMTPService = 1
Const useRemoteSMTPService = 2
Const useLocalExchangeService = 3

Dim objMessage
Dim mySMTPServer
Dim mySMTPPort
Dim MailFrom
Dim MailTo
Dim Title
Dim TxtBodyFile
Dim TxtBody
Dim myAttachment
Dim objFileSys
Dim objTextStream
Dim strOpenFile
Dim strText

mySMTPServer = "192.168.41.5"
mySMTPPort = 25
MailFrom = InputBox("送信元メールアドレスを入力して下さい.")
MailTo = InputBox("宛先メールアドレスを入力して下さい.")
Title = InputBox("タイトルを入力して下さい.")

myAttachment = InputBox("C:\mail配下の添付ファイル名を入力して下さい.")
myAttachment = "C:\mail\" & myAttachment

set objFileSys = CreateObject("Scripting.FileSystemObject")

strOpenFile = objFileSys.BuildPath("C:\mail\","メール本文.txt")

Set objTextStream = objFileSys.OpenTextFile(strOpenFile, 1)

Do Until objTextStream.AtEndOfStream = True
   strText = objTextStream.ReadLine
   TxtBody = TxtBody & vbCrLf & strText
Loop

objTextStream.Close

MsgBox "メール本文は下記の通りです。" & vbCrLf & vbCrLf & TxtBody

Set objMessage = CreateObject("CDO.Message")
objMessage.From = MailFrom
objMessage.To = MailTo
objMessage.Subject = Title
objMessage.TextBody = TxtBody
objMessage.AddAttachment(myAttachment)
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/co
nfiguration/sendusing") = useRemoteSMTPService
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/co
nfiguration/smtpserver") = mySMTPServer
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/co
nfiguration/smtpserverport") = mySMTPPort
objMessage.Configuration.Fields.Update
objMessage.Send

MsgBox "送信完了"

Set objMessage = Nothing
Set mySMTPServer = Nothing
Set mySMTPPort = Nothing
Set MailTo = Nothing
Set Title = Nothing
Set TxtBodyFile = Nothing
Set TxtBody = Nothing
Set myAttachment = Nothing
Set objFileSys = Nothing
Set objTextStream = Nothing
Set strOpenFile = Nothing
Set strText = Nothing

実行すると、送信元、送信先、添付ファイルの名前が聞かれます。
送信元はpostfixで書き換えてくれますので何でも構いません。

例:test@test

送信先は、ご自分のアドレス且つ2-4で設定したrcptの条件に従ってください。 例:test@test.jp←rcptでjpに対して安全化していますので、ここが違うとタダのメールが届きます。

添付ファイルは
test.txt
になります。

成功すると送信先に以下の様な名前の添付ファイルが付いたメールが届きます。

開くとダウンロード先のURLが記載されております。

現時点では解凍パスワードはpostfixで設定したリレーのGmailアドレスに届きます。 Gmailにtest@○○○にログインしメールを確認します。 以下の様にパスが書かれておりますので、こちらのメールを送信先に送ればいわゆるPPAPの対策が可能になります。

失敗した場合はを確認してみてください。
/var/log/messages
/var/log/maillog

2-8. 送信先に送られる添付ファイルにパスワードを記載してしまう

2-7ではnextcloudで設定したpostfixのGmailユーザーに送られます。セキュリティ上はこれで良いのですが、それを人手で再度送るのは手間になるので、いっそのことまとめて送信してしまいましょう。(PPAP上はあまり良くないかと思います。)

os_uploaderを編集します。pythonで書かれています。

vi /usr/local/bin/os_uploader

38行名を追加します。

1050行目を追加します。
1069行目をコメントアウトします。
1070行目を追加します。

テンプレートも編集しておきます。

vi /usr/local/etc/samma/os_uploader.tmpl

Passwordを追加します。

Download URL:
<@@URL@@>

Attachment files:
<@@FILENAME@@>

Password:
<@@PASSWORD@@>

SaMMAをリスタートします。

systemctl restart samma

2-9. 添付ファイルのダウンロード期限を設定する(期限で削除する)

nextcloud側で設定します。
cronをnextcloudで設定したユーザーapacheで動かします。

sudo crontab -u apache -e

cron.phpを5分おきに実行する設定を書きます。

*/5 * * * * /usr/bin/php -f /var/www/nextcloud/cron.php

nextcloudにログインします。
右上の〇にカーソルを持っていき「管理者設定」

下の方の「基本設定」

バックグラウンドジョブを「Cron(推奨)」に変更します。
エラーメッセージはこの設定と先ほどのcronの設定で消えます。

一定期間でファイルを削除するアプリをnextcloudにインストールします。
右上の〇から「+アプリ」をクリックします。

クリック後虫眼鏡をクリックします。

retentionで検索します。下のRetentionを「ダウンロードして有効にする」でダウンロードします。

tagで検索します。File automated taggingを「ダウンロードして有効にする」でダウンロードします。

管理者設定をクリックします。

基本設定をクリックします。

右ペインに表示される画面の一番下に「コラボタグ」があります。

新しいタグを「auto_delete」不可視で「作成」します。

左ペインにある「Flow」をクリックします。個人と管理の下にあります管理の下にあるFlowになりますので注意してください。

「新しいフローを追加」をクリックします。
下半分で
「リクエストリモートアドレス」
「127.0.0.1/32」(ローカルからSaMMAでアップされるため)
右の自動タグ付けは
「auto_delete(invisible)」
を選択して「保存」

更に下に保持期間を決められる画面があります。(ない場合は個人のFlowに入ってる可能性が大きいです。管理の下にあるFlowを開いてください。)auto_delete(invisible)を選択し、保持する日数を決めます。テストの時は1日にすると良いかと思います。下のNotify~スイッチをONにすると削除前にメールがきますので最初はONにしても良いと思います。

簡単に設定をまとめると…

  • Flowという機能でいくつかの処理を定期的に実行できます。
  • Flowを使用するにはcronの設定が必要です。
  • File automated taggingでアップロードされたファイルにタグを付けます。
  • Retentionでタグのついたファイルの保持期間を決めてその期間で削除します。

あとがき

書いてみると割と盛りだくさんになってしまいました。Linuxは最初のうちは難しいですが、やっていることは単純にダウンロードして解凍してインストールしているだけですので、恐れずにやってみるのが良いと思います。なにかあったらログを見ればだいたい解決できます。今回はIBM iの設定はなかったですが、次回は色々な環境からIBM i に接続しPHP等で簡単なAPIを作っていきます。

いいねと思ったらシェア
twitter
facebook
hatena
関連記事
使ってみよう!Rational Developer for i
使ってみよう!Rational Developer for i
IBM i 用の新しいODBCドライバー
IBM i 用の新しいODBCドライバー
第1回 [入門編] いまさら聞けないディープラーニング、機械学習
第1回 [入門編] いまさら聞けないディープラーニング、機械学習
あなたにオススメの連載
できるIBM i 温故知新編
8記事
できるIBM i 温故知新編
IBM i の”新”必須言語 〜FFRPG入門〜
14記事
IBM i の”新”必須言語 〜FFRPG入門〜
IBM i アプリの第二の柱 OSS
15記事
IBM i アプリの第二の柱 OSS
PAGE TOP