Check and manage Mailcow email — read inboxes, search emails, check delivery logs, manage greylisting.
Access the self-hosted Mailcow email server at /opt/services/mailcow/.
mx.alive.best127.0.0.1:8180 (internal only, proxied via Caddy)/opt/services/mailcow/.env as MAILCOW_API_KEYdoveadm to read, NOT raw maildir files| Mailbox | Purpose |
|---|---|
[email protected] | Dweil bot email |
[email protected] | Sopje bot email |
To list all mailboxes:
curl -s "http://127.0.0.1:8180/api/v1/get/mailbox/all" \
-H "X-API-Key: $(grep MAILCOW_API_KEY /opt/services/mailcow/.env | cut -d= -f2)" \
-H "Content-Type: application/json"
docker exec mailcowdockerized-dovecot-mailcow-1 doveadm search -u [email protected] ALL
docker exec mailcowdockerized-dovecot-mailcow-1 doveadm search -u [email protected] SINCE 17-Feb-2026
docker exec mailcowdockerized-dovecot-mailcow-1 doveadm fetch -u [email protected] "hdr" mailbox INBOX uid UID 2>/dev/null | grep -iE "^(Subject|From|Date):"
docker exec mailcowdockerized-dovecot-mailcow-1 doveadm fetch -u [email protected] "body" mailbox INBOX uid UID 2>/dev/null | python3 -c "
import sys, quopri, re
data = sys.stdin.read()
decoded = quopri.decodestring(data.encode()).decode('utf-8', errors='replace')
print(decoded)
"
docker exec mailcowdockerized-dovecot-mailcow-1 doveadm fetch -u [email protected] "body" mailbox INBOX uid UID 2>/dev/null | python3 -c "
import sys, quopri, re
data = sys.stdin.read()
decoded = quopri.decodestring(data.encode()).decode('utf-8', errors='replace')
links = re.findall(r'href=\"(https?://[^\"]+)\"', decoded)
for l in links:
print(l)
"
for uid in \$(docker exec mailcowdockerized-dovecot-mailcow-1 doveadm search -u [email protected] ALL 2>/dev/null | awk '{print \$2}'); do
subj=\$(docker exec mailcowdockerized-dovecot-mailcow-1 doveadm fetch -u [email protected] "hdr" mailbox INBOX uid \$uid 2>/dev/null | grep -i "^Subject:" | head -1)
from=\$(docker exec mailcowdockerized-dovecot-mailcow-1 doveadm fetch -u [email protected] "hdr" mailbox INBOX uid \$uid 2>/dev/null | grep -i "^From:" | head -1)
echo "UID \$uid: \$subj | \$from"
done
docker exec mailcowdockerized-dovecot-mailcow-1 doveadm mailbox list -u [email protected]
docker exec mailcowdockerized-dovecot-mailcow-1 doveadm search -u [email protected] mailbox Junk ALL
docker logs mailcowdockerized-postfix-mailcow-1 --tail 100 2>&1 | grep -i "[email protected]"
docker logs mailcowdockerized-postfix-mailcow-1 --tail 200 2>&1 | grep -i "greylist"
Greylisting config: /etc/rspamd/local.d/greylist.conf inside the rspamd container.
docker exec mailcowdockerized-rspamd-mailcow-1 cat /etc/rspamd/local.d/greylist.conf
docker exec mailcowdockerized-rspamd-mailcow-1 sh -c 'echo "enabled = false;" > /etc/rspamd/local.d/greylist.conf'
cd /opt/services/mailcow && docker compose restart rspamd-mailcow
docker exec mailcowdockerized-rspamd-mailcow-1 sh -c 'cat > /etc/rspamd/local.d/greylist.conf << EOF
whitelisted_ip = "http://nginx:8081/forwardinghosts.php";
ipv4_mask = 24;
ipv6_mask = 64;
message = "Greylisted, please try again later";
EOF'
cd /opt/services/mailcow && docker compose restart rspamd-mailcow
doveadm fetch with "body" or "hdr" fields, decoded via quoprimailcowdockerized-{service}-1 (postfix, dovecot, rspamd, etc.)cd /opt/services/mailcow && docker compose restart {service}-mailcow