May be exporting to RAW files and importing into a new and correct Joplin-server instance is possible:
HTH
May be exporting to RAW files and importing into a new and correct Joplin-server instance is possible:
HTH
I tested mail and I think the issue is that the MAILER_NOREPLY_EMAIL is not set correctly.
When notification is set to the mail server itself then MAILER_NOREPLY_EMAIL
is empty which doesnât work and when using notification using an external server the MAILER_NOREPLY_EMAIL
is set to just the username without â@domainâ.
If that variable is set correclty, mailing should work.
So, the same thing that was happening in 1.0.5? If I go in Joplin to the âsent emails,â this is what I see:
Yes, in your screenshot the from mail address is missing.
Please check if postgres is working first to not lose the data again after restarting the service.
You should find a line like this in the joplin app logs:
2025-07-31T13:23:41+02:00 [1:joplin2:joplin-server] 11:23:41 0|app | client: 'pg',
To set a right from mail address you need to edit the app.env
file:
runagent -m joplin1 nano app.env
Set MAILER_NOREPLY_EMAIL
to a working mail address that is allowed to send:
MAILER_NOREPLY_EMAIL=address@domain.tld
Restart the service:
runagent -m joplin1 systemctl --user restart joplin
This is just a workaround, after reconfiguring the app by clicking save in the app settings it doesnât work anymore as the variable is set wrong again.
Yep, itâs there:
2025-07-30T14:24:39-04:00 [1:joplin2:joplin-server] 18:24:39 0|app | client: 'pg',
âŚwhich hopefully means this particular problem wonât recur. But I donât see a way to restart the app without restarting the entire server.
I corrected my post. Following command should just restart the Joplin server:
runagent -m joplin1 systemctl --user restart joplin
Itâd be awfully nice if there were a button in the UI to do that, but that worked (and obviously isnât a you problem). Joplin Server is restarted, and the user I created persists. So now to see about editing that email.
As expected, MAILER_NOREPLY_EMAIL was empty, so set that to joplinserver@mydomain
and restarted the module again. And somewhat surprisingly, the confirmation email came through automatically, without my needing to resend it.
But it sounds like this still needs to be fixed:
Itâs planned, see Core: button to restart the module ¡ Issue #7486 ¡ NethServer/dev ¡ GitHub
Yes, I think in this case weâd need a âMail from:â field in the UI to be able to set a correct from address.
let me see if i can address this specifically for the Joplin Module, SMH
Or just a default: noreply@maildomain
would seem appropriate.
i think this is the esier opiton and faster one actually. also much cleanerâŚ
Yes, a default noreply@maildomain
should work.
while implementing, i was left with trying to figure out, what the maildomain would be, so i implemented a method to extract the domain, from the mailserver hostname, and append that to the noreply hope it works
host = SMTP_HOST
parts = host.split('.')
if len(parts) >= 2:
maildomain = '.'.join(parts[-2:])
else:
maildomain = host
just noticed it miht cause issues, for eternal defined email parameters, sicne my testing mail server is hosted on a provider like zoho, so i would have no-reply@zoho.com, which is not correct
if re.match(r"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$", SMTP_USERNAME):
MAILER_NOREPLY_EMAIL = SMTP_USERNAME
else:
I tested 1.0.7 but configure-module doesnât work anymore when notification is set to an external server. I didnât test using the mail instance yet.
File "/home/joplin2/.config/actions/configure-module/10configure_environment_vars", line 41
smtp_host = SMTP_HOST
^
IndentationError: expected an indented block after 'else' statement on line 39
To avoid the error you could change ns8-joplinserver/imageroot/actions/configure-module/10configure_environment_vars at main ¡ geniusdynamics/ns8-joplinserver ¡ GitHub as follows:
if re.match(r"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$", SMTP_USERNAME):
MAILER_NOREPLY_EMAIL = SMTP_USERNAME
else:
# Extract maildomain from host (strip subdomain) to handle slef main for joplin
smtp_host = SMTP_HOST
parts = smtp_host.split('.')
if len(parts) >= 2:
maildomain = '.'.join(parts[-2:])
else:
maildomain = smtp_host # fallback if host is weird or just a TLD
MAILER_NOREPLY_EMAIL = f"noreply@{maildomain}"
thanks, fixed the indent issue
So I now see my server is suggesting an upgrade to 1.0.9. Does that have everything fixed?
No, itâs not working.
With internal mail:
MAILER_HOST=10.5.4.1
MAILER_NOREPLY_EMAIL=noreply@4.1
@oneitonitram in this case please use the TRAEFIK_HOST instead of the SMTP_HOST because SMTP_HOST is just the VPN IP of the mail server but still it could be that one uses another domain for joplin than for the mail server and it would fail again.
With external mail:
MAILER_HOST=mrmarkuz.domain.tld
MAILER_NOREPLY_EMAIL=noreply@domain.tld
I this case my external mail server is mrmarkuz.domain.tld but the domains are not the same as the mail server hostname domain.
First case could be guessed but there could be issues and second case is really hard to guess.
I think we need at least an env var, for example CUSTOM_FROM
thatâs only applied when set.
good i dea, there is not proper way to set or implement this corectly in a way that would automatically implement this, by detection.
You could also use hostname -d
for mail instance domain guessing.