/etc/openvpn/server.conf 内に以下の行を追加します。
script-security 2
client-connect /path/to/script-con.sh
script-security 2 は外部スクリプトを実行するために必要です。デフォルトは 1 です。
0 -- Strictly no calling of external programs.
OpenVPN man page
1 -- (Default) Only call built-in executables such as ifconfig, ip, route, or netsh.
2 -- Allow calling of built-in executables and user-defined scripts.
3 -- Allow passwords to be passed to scripts via environmental variables (potentially unsafe).
client-connect にはクライアントの接続時に実行するスクリプトを指定します。実行権限を与えるのを忘れないように。 client-disconnect で切断時に実行するスクリプトを指定できます。
スクリプト内には定義された環境変数を使えます。全ての環境変数は man page の "Environmental Variables" 節に記載されています。
今回はシェルスクリプト内から更に Python スクリプトを呼び出してメールを送るという二段ロケットな形を採りましたが、問題なく実行されました。簡単な例を記載しておきます。
#!/bin/sh
/usr/bin/env python3 /path/to/python-script.py $common_name $trusted_ip
#!/usr/bin/env python3
# coding: utf-8
import sys
args = sys.argv
# Send messages to server admins
...