RRZE – Projekte & Prozesse (P&P)

Das Blog der RRZE Stabsstelle "Projekte & Prozesse"

Content

Message-ID & Grails Mail Plugin

Nach einem freundlichen Hinweis unserer Postmaster, dass die Message-ID unserer E-Mails eher suboptimal ist, einigten wir uns auf eine neue einheitliche Message-ID für unsere Anwendungen.

Bisher wurde die Message-ID autogeneriert und hatte die Form: <1234567890.12.1234567890123.JavaMail.”RRZE IdM-Portal”@smtp.uni-erlangen.de>

Wir haben uns nun auf die folgende Form geeinigt: <[TIMESTAMP].[RANDOM(10)].[appname]@[domain]>

In unseren GRAILS-Anwendungen nutzen wir das Mail-Plugin. Man kann die Message-ID durch folgende Anweisung neu setzen.
[groovy]
headers “Message-ID”: “<message-id@domain>”
[/groovy]

Es gibt allerdings ein Problem bei dieser Lösung: Man kann die Message-ID nicht anwendungsweit in der Konfiguration festlegen. Daher müsste man bei jedem Aufruf des Mail-Services die Message-ID neu setzen. Wir haben uns nun dafür entschieden, einen eigenen Service als Wrapper für den Mail-Service zu nutzen.
[groovy]class PpsaMailService {
def grailsApplication

def mail = { c ->
def domain = grailsApplication.config.mail.domain?:’idm.fau.de’
// generate random number

sendMail {
c.delegate = delegate
c.call()
headers “Message-ID”: “<${(System.currentTimeMillis())}.${randomNumber}.${grailsApplication?.metadata[‘app.name’]}@${domain}>”
}
}
}
[/groovy]

In der Grails Konfiguration kann man nun die Domain für die Message-ID festlegen, default ist idm.fau.de.

Folgendes Beispiel zeigt nun, wie der neue Service zu nutzen ist:

Mit Mail Plugin:
[groovy]
sendMail {
from “from@example.org”
to “to@example.org”
subject “Subject”
body “Body”
}
[/groovy]

Mit Wrapper:
[groovy]
def ppsaMailService
ppsaMailService.mail {
from “from@example.org”
to “to@example.org”
subject “Subject”
body “Body”
}
[/groovy]

 

Message-ID & Grails Mail Plugin

After a friendly advice from our postmaster, the Message-ID of our e-mails are rather suboptimal, we agreed on a new consistent Message-ID for our applications.

So far the Message-ID has been automatically generated and had the form: <1234567890.12.1234567890123.JavaMail.”RRZE IdM-Portal”@smtp.uni-erlangen.de>

We agreed now on the following form: <[TIMESTAMP].[RANDOM(10)].[appname]@[domain]>

In our GRAILS-applicatons we use the Mail-Plugin. You can set a new Message-ID with the following command:
[groovy]
headers “Message-ID”: “<message-id@domain>”
[/groovy]

However there is a problem with this solution: you can not define the Message-ID application wide in the configuration. Therefore the Message-ID would have to be set again at every request to the Mail-Service. We have now decided to use an own service as a wrapper for the Mail-Service.
[groovy]class PpsaMailService {
def grailsApplication

def mail = { c ->
def domain = grailsApplication.config.mail.domain?:’idm.fau.de’
// generate random number

sendMail {
c.delegate = delegate
c.call()
headers “Message-ID”: “<${(System.currentTimeMillis())}.${randomNumber}.${grailsApplication?.metadata[‘app.name’]}@${domain}>”
}
}
}
[/groovy]

In the Grails configuration, the domain for the Message-Id can be set. Default is idm.fau.de.

The following example shows how to use the service:

With Mail Plugin:
[groovy]
sendMail {
from “from@example.org”
to “to@example.org”
subject “Subject”
body “Body”
}
[/groovy]

With Wrapper:
[groovy]
def ppsaMailService
ppsaMailService.mail {
from “from@example.org”
to “to@example.org”
subject “Subject”
body “Body”
}
[/groovy]