iSeries,AS/400,i5,IBM,HRM
iSeries(i5)、AS/400からのメール送信
環境設定
1. ドメイン作成(AS/400)
CHGTCPDMN HOSTNAME(システム名) DMNNAME(ドメイン名) DMNSCHLIST(*DFT) HOSTSCHPTY(*LOCAL) INTNETADR(DNSサーバーIP)
システム名:DSPNETAで表示されるシステム名
ドメイン名:任意(@@@.COM)
2. ホストテーブル追加
CFGTCP→bP0
インターネットアドレス:AS400 IPアドレス
ホスト名:上記ホスト名
3. 経路指定の*DFTROUTE はインターネット網出口を指定して下さい
CFGTCP→bQ
4. SMTPサーバー再起動
ENDTCPSVR
SERVER(*SMTP)
STRTCPSVR SERVER(*SMTP)
上記設定でメール送信が出来ます。
下記の設定は、個々のユーザーからの送受信設定です。
1. ADDDIRE USRID(*ANY QSMRMTAD) USRD('SMTP ユーザー ') SYSNAME(TCPIP)
2. ADDDIRE USRID(QSMTPDMY QSMTPSYS) USRD('SMTPQ ユーザー ') SYSNAME(TCPIP)
3. ADDDIRE USRID(SMTPDIRE SMTPDIRE) USRD('SMTP ゲートウェイ ユーザー ')
SYSNAME(TCPIP) PREFADR(NETUSRID *IBM ATCONTXT)
4. 送信する為には各ユーザー(送信ユーザー)を登録しなれけばなりません。
サインオン・ユーザー、ジョブ・ユーザー
4.1. ADDDIRE USRID(ユーザー システム名) USRD(ユーザー) USER(ユーザー) NETUSRID('ユーザー システム名')
ADDDIRE USRID(QPGMR HRMSYS) USRD(QPGMR) USER(QPGMR) NETUSRID('QPGMR HRMSYS')
4.2. 送信元メールID設定方法
4.2.1. WRKDIRE と入力し実行する。
4.2.2. 登録したユーザーのオプション欄に2を入力し実行する。
4.2.3. F19(SMTP 用の名前変更)を押す
4.2.4. SMTPユーザーIDとSMTPドメイン名を設定すれば送信元が設定されます。
5. CHGDSTA SMTPRTE(SMTPDIRE SMTPDIRE)
6. CHGSMTPA MAILROUTER(構内からの出口ルーター) FIREWALL(*YES) ALWRLY(*ALL)
AS/400から直接インターネット網に出れる場合は設定が必要有りません
7. SMTPサーバー再起動
ENDTCPSVR
SERVER(*SMTP)
STRTCPSVR SERVER(*SMTP)
コマンドを使っての送信方法
メッセージ
SNDDST TYPE(*LMSG) TOINTNET((SE−SUPPORT@HRM.CO.JP)) DSTD(' ヤッホー ')
LONGMSG(' 本日は晴天なり ')
(実際は日本語では送信出来ません。件名、文章とも英数字で送信してみて下さい )
スプール
@ CRTFLR FLR(AAAAA)
A CRTPF FILE(QTEMP/BBBB) IGCDTA(*YES)
B CPYSPLF FILE(SPLF) TOFILE(QTEMP/BBBB) SPLNBR(*LAST)
C CPYTOPCD FROMFILE(QTEMP/BBBB) TOFLR(AAAAA) FROMMBR(BBBB)
D SNDDST TYPE(*DOC) TOINTNET((HRM@FIXA.JP)) DSTD(MAIL) DOC(BBBB)
FLR(AAAAA)
プログラムでの送信方法
送受信先アドレス、本文フォルダー、ファイル名は大文字で作成して下さい
コンパイル方法
CRTRPGMOD MODULE(QTEMP/RSENDMAIL) SRCFILE(HRMLIB/QRPGLESRC)
CRTPGM PGM(QTEMP/RSENDMAIL) BNDSRVPGM(QTCP/QTMMSNDM)
「記号 'QtmmSendMail' の定義が見つからない。」というJOBLOGが
出ている場合はソースファイルのCCSIDを確認して下さい。
CCSID=5035,65535等に変換し行って下さい。
送信方法
@ 本文を作成する。
必ずヘッダー + 1行空白 + 本文で作成して下さい。
ヘッダーがない場合は送信されません。
この中に有るFrom,Toが実際に相手がわで表示される宛先、送信先です。よって日本語宛
先や送信先を設定する事が出来ます。実際に送信する宛先は上記サンプルプログラム内の
アドレスとなります。
A 上記作成した本文をSTMFへSJIS変換する。
CPYTOSTMF FROMMBR('/QSYS.LIB/HRMLIB.LIB/QDOC.FILE/MSG.MBR')
TOSTMF('/MAIL/MSG.TXT') STMFCODPAG(932)
例.是はソースファイルHRMLIB/QDOC(MSG)を/MAIL/MSG.TXTへSJIS変換しています。
B /MAIL/MSG.TXTの*PUBLIC権限を*NONEから*RWXに変更して下さい。
(送信が終わるとこのメッセージを消す為)
a. WRKLNK OBJ('MAIL/MSG.TXT')
b. オプション"9"を入力し実行キーを押す
c. *PUBLICのオプション欄へ”2”を入力し実行キーを押し権限を*RWXへ変更する。
障害例
送信されない場合
@ SMTPサーバーが動いてるか?
QSYSWRK下に四つのジョブが動いてるかチェックする。
QTSMTPBRCL
QTSMTPBRSR
QTSMTPCLTD
QTSMTPSRVD
開始方法
STRTCPSVR SERVER(*SMTP)
A QMSFジョブが動いてるか?
QSYSWRKの配下にQMSFジョブがあるかチェックする。
開始方法
STRMSF
B QSYSWRKのQMSFのジョブログを確認して下さい。
a. 「TCP5101:ストリームファイルがオープン出来ない」
メッセージの権限が*WRXになってない場合や存在しない場合
b. 「TCP9676:SMTP 配布は送信されていません。データを分析することができません」
CPYTOSMTFが失敗しているのかも?
ストリームファイルを確認して下さい
C 本文のヘッダーを再度確認して下さい。
D 相手がスパムメール対策として送信者アドレスが存在しない場合に受付ない場合があります。
配信エラーPOP設定
・ WRKDIREて送信ユーザーを変更
メール・サービス・レベルを2に設定
優先アドレスを3に設定
・ 結果参照
WRKLNK /QTCPTMM/MAIL/ユーザー内に返信されます。
添付ファイルが無いのに添付ファイルマークが出てしまう。
本文のヘッダーが間違ってる場合にこのような現象になる時があります。
セミコロンやコロンも確認して下さい。
文字化けが起きてしまう。
本文がSJIS対応出来ない場合に起きる
本文のみをJIS変換し送付すればOK(確認済)
対策(本文作成方法)
1.
ヘッダー部のみ
CPYTOSTMF FROMMBR('/QSYS.LIB/HRMLIB.LIB/QDOC.FILE/HEAD.MBR')
TOSTMF('/MAIL/MSG.TXT') STMFCODPAG(932)
2. FTPで自マシーンへ接続(AS/400)
BINARYで上記/MAIL/MSG.TXTをファイル(QTEMP/BBB)にGET
3. 本文をJIS変換(AS/400)
CVTDBCS FROMFILE(QTEMP/CCC) TOFILE(QTEMP/AAA) CVTDIST(*FROMIBM) DBCS(*JIS)
4. 2のファイルに追加
CPYF
FROMFILE(QTEMP/AAA) TOFILE(QTEMP/BBB) MBROPT(*ADD)
5. FTPで自マシーンへ接続(AS/400)
BINARYで上記/MAIL/MSG.TXTファイルへQTEMP/BBBをPUTする。
エスケープシーケンスの入れ方は、次のようなルールが有ります。
・ 文章の最初はASCIIで始まると仮定されています。
・ 行の終わりはASCI又はJISローマ字に戻して下さい。
・ 文章の最後はASCIIに戻して下さい。
SMTPジョブが永遠稼動している。
QTSMTPCLTP,QTSMTPSRVP
宛先間違いなどやスパムメール等でこのような現象が起きます。
対処方法
1. ENDTCPSVR SERVER(*SMTP)
2. ENDMSF OPTION(*IMMED)
3. CRTDTAARA DTAARA(QUSRSYS/QTMSCLEAN) TYPE(*CHAR) LEN(1) TEXT('C')
4. STRTCPSVR SERVER(*SMTP)
5. STRMSF MSGOPT(*CLEAR) NBRMSFJOB(1)
送信ログを確認したい
CHGSMTPA JOURNAL (*YES)
確認方法
DSPJRN JRN(QUSRSYS/QZMF)