Gmailのグループメールが届かない?この設定をチェック〜スパムメール処理
Google Workspace の グループを Gmail のメーリングリストとして使っていると特定の相手からメールが届かない!という事象に遭遇することがあります。明らかなスパム要素を含むものであったり、送信元の SPF / DKIM / DMARC といったメールのセキュリティ設定によるものであれば解決方法は思いつきますが、グループメンバー宛なら届くのにグループ宛だと届かないというようなケースではどのような原因・解決方法が考えられるでしょうか。今回はグループのスパム処理設定が原因でメール不達となるケースについて原因と対策を詳しく考えていきます。
グループ設定〜スパムメール処理
Google Workspace のグループ設定にはスパムメール処理についての項目があります。選択肢は(日本語訳が難解で選択し難いのですが…)
- スパムに分類されたすべてのメッセージを拒否
- 管理してコンテンツ管理者に通知
- 管理してコンテンツ管理者には通知しない
- グループの疑わしいメッセージの投稿を許可
となっており、デフォルトは「管理してコンテンツ管理者に通知」です。「管理してコンテンツ管理者に通知」が選択されていると、グループ宛のメールがスパム判定された場合、グループのコンテンツを管理できるユーザー(デフォルトではマネージャーあるいはオーナー。以下「コンテンツ管理者」)に該当するメールのグループメンバーへの送信可否の判断を求めるメールが届きます。コンテンツ管理者はメールのリンク(或いはグループアプリの [ スレッド>保留 ] )よりメールを閲覧し送信の可否を決定します。[メッセージを承認] アイコン をクリックするとメールはグループメンバーの受信トレイに配送されます。[メッセージを拒否] アイコン をクリックするとメールは拒否され、グループメンバーには配送されません。承認していないメッセージは 14 日間が経過すると自動的に削除されます。スパムとして報告したメッセージは 7 日間が経過すると自動的に削除されます。
またメールの横のチェックボックスにオンにして以下の操作を行うことも可能です。
- [メッセージを承認] アイコン をクリックしてメッセージを承認。
- [メッセージを拒否] アイコン をクリックしてメッセージを拒否。
- [投稿者を承認] アイコン をクリックしてメッセージを承認し、それらの投稿者からの以降のメッセージをすべて自動的に承認。
- [投稿者を拒否] アイコン をクリックしてメッセージの投稿者が会話に参加することを禁止して、メッセージをスパムとして報告。
コンテンツ管理者にスパムレポートがメールで届くタイミングは、太平洋時間の毎週火曜日と金曜日(タイムゾーンによっては水曜日と土曜日)です。
グループ設定〜管理者
Google Workspace の設定が厳しめで、グループのメンバー管理をユーザーにさせない場合や、サードパーティ製 SSO でグループ設定を管理している場合、グループメンバーに「オーナー」や「マネージャー」の権限を与えず、「メンバー」のみで運用している組織もあるのではないでしょうか。このコンテンツ管理者不在の状態と先ほどのスパムメール処理のデフォルト設定がグループメール不達の原因になる場合があります。
- グループにコンテンツ管理者が不在
- スパムメール処理がデフォルト設定
対策
一般ユーザーにグループのオーナーやマネージャーのロールを付与しないというポリシーを維持した場合の対策としては、今後新規作成するグループはデフォルトの設定を使わず、明示的にスパムメール判定を「グループの疑わしいメッセージの投稿を許可」にすることです。既存のグループに関しては
- 特権管理者が全てのグループ設定を変更する
- グループメンバーの代表者にコンテンツを管理できる権限をつけ、設定変更を求める
ということになりますが、組織内のグループ数が多くなると現実的ではありません。そこで、Google Apps Script(以下 GAS )を利用して設定変更を自動化する方法を検討します。
GAS によるグループ設定の自動化
Google グループの設定変更は Groups Settings API を利用します。
{
"timeZone": "Asia/Tokyo",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes":[
"https://www.googleapis.com/auth/apps.groups.settings",
"https://www.googleapis.com/auth/script.external_request"
]
}
このようにしてグループ設定を取得することができます。
function getGroupSettings(token, groupId) {
const URL = `https://www.googleapis.com/groups/v1/groups/${groupId}?alt=json`;
const options = {
headers: {
Authorization: "Bearer " + token,
},
"method": "GET",
"contentType": "application/json",
};
const response = UrlFetchApp.fetch(URL, options);
console.log(response.toString());
return (response)
}
設定の変更はこのように書けます。
function setGroupSettings(token, groupId) {
const URL = `https://www.googleapis.com/groups/v1/groups/${groupId}?alt=json`;
//"spamModerationLevel": "MODERATE", 管理してコンテンツ管理者に通知
//"spamModerationLevel": "ALLOW", グループの疑わしいメッセージの投稿を許可
var request = {
"spamModerationLevel": "ALLOW"
}
const options = {
headers: {
Authorization: "Bearer " + token,
},
"method": "PUT",
"contentType": "application/json",
"payload": JSON.stringify(request),
};
const response = UrlFetchApp.fetch(URL, options);
console.log(response.toString());
return (response)
}
グループリストを作っておいてまとめて処理します。
function setGroupListSettings() {
var token = ScriptApp.getOAuthToken();
for (var group of groupList){
console.log(group);
setGroupSettings(token,group);
}
}
これで既存のグループの設定を書き換えることができました。
まとめ
今回はグループ設定のスパムメール処理が原因で、グループメールが届かないケースについて考えてみました。対策としては、グループにコンテンツ管理者をおいてスパムメールを管理させるか、スパムメールを含む全てのメールをメンバーに配信するかということになります。痛し痒しですね。Gmail でのスパムメール判定については個別の判定理由は明らかにされず、釈然としないこともありますが、標的型メールなどの攻撃に対する防御力は非常に強いものであると感じられます。適切なメールセキュリティ設定で組織の大切な情報を守りたいですね。