Ubuntu 24.04-ல் Listmonk நிறுவுவது எப்படி?
Ubuntu 24.04-ல் Listmonk-ஐ PostgreSQL, config.toml மற்றும் systemd உடன் நிறுவுவது எப்படி என அறியுங்கள். SMTP இணைப்பு மற்றும் மின்னஞ்சல் விநியோக செலவுகள் குறித்த முழு விவரங்கள்.
Listmonk self-hosted newsletter-க்குத் தேவையானவை
Listmonk என்பது ஒரு self-hosted newsletter மற்றும் mailing list மேலாளர் ஆகும்: இதில் ஒரு Go binary, ஒரு PostgreSQL database, ஒரு config file மற்றும் ஒரு systemd unit ஆகியவை அடங்கும். Listmonk சந்தாதாரர்களைச் சேமித்து வைத்து, பிரச்சாரங்களை (campaigns) வரிசைப்படுத்துமே தவிர, மின்னஞ்சல்களை நேரடியாக அனுப்பாது. எனவே, ஒரு சிறிய VPS-ல் இதை எளிதாக இயக்க முடியும். இது ஒவ்வொரு செய்தியையும் ஒரு SMTP (simple mail transfer protocol) server-க்கு அனுப்பிவிடும்; எனவே, உங்கள் மின்னஞ்சல் விநியோக விகிதம் (delivery rate) இந்த மென்பொருளைப் பொறுத்தது அல்ல, அந்த SMTP server-ன் நற்பெயரைப் (reputation) பொறுத்தது.
இந்த வழிகாட்டி, ஜூலை 2026 நிலவரப்படி தற்போதைய பதிப்பான Listmonk v6.2.0-ஐ Ubuntu 24.04-ல் நிறுவுகிறது. இதற்கு பொது IP முகவரி கொண்ட ஒரு VPS, நீங்கள் கட்டுப்படுத்தும் ஒரு domain name மற்றும் PostgreSQL 12 அல்லது அதற்குப் பிந்தைய பதிப்பு தேவை. இதை நிறுவ சுமார் ஒரு மணிநேரம் ஆகும். மின்னஞ்சல் அனுப்பும் நற்பெயரை (sending reputation) உருவாக்க வாரங்கள் ஆகும், அது குறித்த தகவல்கள் இறுதியில் கொடுக்கப்பட்டுள்ளன.
PostgreSQL-ஐ நிறுவி database-ஐ உருவாக்குதல்
Ubuntu 24.04 அதன் சொந்த repository-ல் PostgreSQL 16-ஐ வழங்குகிறது, இது Listmonk-க்குத் தேவையானதை விட மேம்பட்டது.
sudo apt update
sudo apt install -y postgresql curl
sudo systemctl enable --now postgresqlஒரே psql session-ல் role மற்றும் database-ஐ உருவாக்கவும். -v ON_ERROR_STOP=1, ஏதேனும் ஒரு statement தோல்வியுற்றால் psql-ஐ வெளியேறச் செய்யும்; இதனால் தட்டச்சுப் பிழைகள் காரணமாக அரைகுறையான அமைப்பு ஏற்படுவதைத் தவிர்க்கலாம்.
sudo -u postgres psql -v ON_ERROR_STOP=1 <<'SQL'
CREATE USER listmonk WITH PASSWORD 'pick-a-long-random-password';
CREATE DATABASE listmonk OWNER listmonk;
SQLOWNER listmonk என்பது வெறும் அலங்காரத்திற்காக அல்ல. Schema நிறுவல் tables, types, indexes மற்றும் functions-ஐ உருவாக்குகிறது, எனவே அந்த role-தான் database-க்கு உரிமையாளராக இருக்க வேண்டும். வேறொரு role-க்குச் சொந்தமான database-ஐ Listmonk-க்குக் குறிப்பிட்டால், நீங்கள் GRANT CONNECT-ஐ இயக்கியிருந்தாலும், permission denied பிழையுடன் நிறுவல் நின்றுவிடும்.
தொடர்வதற்கு முன் database உருவாக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்.
sudo -u postgres psql -tAc "SELECT datname FROM pg_database WHERE datname='listmonk';"இது listmonk என்பதை அச்சிடும். காலியான வரி வந்தால், CREATE statement இயங்கவில்லை என்று பொருள்; எனவே psql வெளியீட்டை மீண்டும் சரிபார்க்கவும்.
Listmonk binary-ஐ நிறுவுதல்
Listmonk ஒவ்வொரு architecture-க்கும் ஒரு static binary-ஐ வெளியிடுகிறது. முதலில் உங்கள் machine-ன் architecture-ஐ சரிபார்க்கவும், ஏனெனில் ARM VPS-ல் amd64 binary-ஐ இயக்கினால், kernel அதை நிராகரித்துவிடும்.
dpkg --print-architecture
cd /tmp
curl -fsSLO https://github.com/knadh/listmonk/releases/download/v6.2.0/listmonk_6.2.0_linux_amd64.tar.gz
tar -xzf listmonk_6.2.0_linux_amd64.tar.gz
sudo install -m 755 listmonk /usr/bin/listmonk
listmonk --versionARM VPS-ல், file பெயரில் உள்ள amd64-க்கு பதிலாக arm64-ஐப் பயன்படுத்தவும். listmonk --version மூலம் version string-ஐப் பார்ப்பது, அந்த binary உங்கள் machine-க்கு ஏற்றது என்பதற்கான முதல் சான்றாகும்.
config.toml கோப்பை உருவாக்கி பாதுகாத்தல்
--new-config, config.toml-ஐ தற்போதைய பணி அடைவில் (working directory) எழுதுகிறது. இதனால்தான் cd, sudo-க்கு முன்னால் இல்லாமல் sh -c-க்குள் அமைகிறது.
sudo install -d -m 750 /etc/listmonk
sudo sh -c 'cd /etc/listmonk && listmonk --new-config'உருவாக்கப்பட்ட கோப்பு சிறியது. [app]-ன் கீழ், address = "localhost:9000" ஆனது HTTP server-ஐ loopback-ல் மட்டுமே பிணைக்கிறது (bind). எனவே, நீங்கள் ஒரு reverse proxy-ஐ அதற்கு முன்னால் அமைக்கும் வரை, நிர்வாகப் பலகம் (admin panel) இணையத்திலிருந்து அணுக முடியாதபடி இருக்கும். அந்த வரியை மாற்ற வேண்டாம். [db]-ன் கீழ் உங்களுக்கு host = "localhost", port = 5432, user = "listmonk", database = "listmonk" மற்றும் ssl_mode = "disable" ஆகியவை கிடைக்கும். அந்த இயல்புநிலை மதிப்புகள் (defaults) நீங்கள் உருவாக்கிய database-உடன் ஏற்கனவே பொருந்துகின்றன, எனவே நீங்கள் மாற்ற வேண்டிய ஒரே வரி password மட்டுமே.
Postgres அதே கணினியில் loopback-ல் கேட்கும்போது ssl_mode = "disable" சரியாக இருக்கும், ஏனெனில் அந்த traffic கணினியை விட்டு வெளியேறாது. database-ஐ வேறொரு host-க்கு மாற்றினால், அதை require என அமைக்கவும்; இல்லையெனில் password பிணையத்தில் (network) cleartext-ஆகச் செல்லும்.
[db]-ன் கீழ் உள்ள password வரியை, நீங்கள் உருவாக்கிய role-க்கு ஏற்ப மாற்றவும். பிறகு service account-ஐ உருவாக்கி, மற்ற அனைத்து login-களிடமிருந்தும் இந்தக் கோப்பை அணுக முடியாதபடி செய்யவும்.
sudo useradd --system --home-dir /var/lib/listmonk --create-home --shell /usr/sbin/nologin listmonk
sudo chown -R root:listmonk /etc/listmonk
sudo chmod 640 /etc/listmonk/config.tomlஇப்போது service account-ஆல் மட்டுமே இந்தக் கோப்பைப் படிக்க முடியும், வேறு யாராலும் முடியாது.
sudo -u listmonk cat /etc/listmonk/config.toml > /dev/null && echo readable
stat -c '%U:%G %a' /etc/listmonk/config.tomlமுதல் கட்டளை readable-ஐ அச்சிடும். இரண்டாவது root:listmonk 640-ஐ அச்சிடும். அதே cat-ஐ முயற்சிக்கும் பிற சலுகையற்ற (unprivileged) கணக்குகள் Permission denied-ஐப் பெறும். இதுவே இதன் நோக்கம்: இந்தக் கோப்பு உங்கள் database password-ஐ cleartext-ஆக வைத்திருக்கிறது, மேலும் ஒரு server-ல் பொதுவாக ஒன்றுக்கும் மேற்பட்ட login-கள் இருக்கும். நீங்கள் இயக்கும் ஒவ்வொரு service-க்கும் இதே தர்க்கமே பொருந்தும், எனவே குறைந்தபட்ச சலுகை கொண்ட service பயனர்கள் என்பதை ஒருமுறை படித்து, அதை எல்லா இடங்களிலும் செயல்படுத்தவும்.
--install மூலம் schema-வை உருவாக்குதல்
--install கட்டளையானது அட்டவணைகளை உருவாக்கி, இயல்புநிலை அமைப்புகளை (default settings) பதிவேற்றும். முதல் admin login-ஐ environment variables மூலம் அமைக்கவும்; அப்போதுதான் panel-ஐ அணுகுவதற்கு முன்பே அந்த account இருக்கும்.
sudo -u listmonk env LISTMONK_ADMIN_USER=admin \
LISTMONK_ADMIN_PASSWORD='another-long-random-password' \
listmonk --config /etc/listmonk/config.toml --install --yes--yes கட்டளையானது உறுதிப்படுத்தல் கோரிக்கைக்கு (confirmation prompt) பதிலளிக்கும். நீங்கள் அதை automate செய்வதற்கு முன் ஒருமுறை அந்த prompt-ஐ வாசிக்கவும், ஏனெனில் --install என்பது முதல்முறை நிறுவும் கருவியாகும், இது ஏற்கனவே உள்ள Listmonk schema-வை நீக்கிவிடும். இயங்கிக்கொண்டிருக்கும் database-ல் இதை இரண்டாவது முறை இயக்கினால், உங்கள் சந்தாதாரர்களின் (subscribers) தரவுகள் அழிந்துவிடும். இரண்டு முறை இயங்க வாய்ப்புள்ள எந்தவொரு script-லும் --install --idempotent --yes-ஐப் பயன்படுத்தவும், ஏனெனில் அட்டவணைகள் ஏற்கனவே இருக்கும்போது இது எதையும் செய்யாது. புதிய release-ல் வரும் schema மாற்றங்களை --upgrade மூலம் மட்டுமே செயல்படுத்த வேண்டும், --install மூலம் செய்யக்கூடாது.
Browser-ல் பார்ப்பதை விட, database பக்கத்திலிருந்து முடிவைச் சரிபார்க்கவும்.
sudo -u postgres psql -d listmonk -c '\dt'
sudo -u postgres psql -d listmonk -tAc "SELECT username FROM users;"முதல் கட்டளை Listmonk அட்டவணைகளைப் பட்டியலிடும், அவற்றில் subscribers, lists, campaigns, templates மற்றும் bounces ஆகியவை அடங்கும். இரண்டாவது கட்டளை admin-ஐ அச்சிடும். இரண்டாவது கட்டளையிலிருந்து முடிவு எதுவும் வரவில்லை என்றால், environment variables அந்த process-க்குச் சென்றடையவில்லை என்று அர்த்தம்; எனவே, browser-ல் முதல் பயனரை உருவாக்குமாறு panel உங்களிடம் கேட்கும்.
Listmonk-ஐ systemd-ன் கீழ் இயக்குதல்
/etc/systemd/system/listmonk.service-ஐ எழுதவும்.
[Unit]
Description=Listmonk newsletter and mailing list manager
After=network-online.target postgresql.service
Wants=network-online.target
[Service]
Type=simple
User=listmonk
Group=listmonk
WorkingDirectory=/var/lib/listmonk
ExecStart=/usr/bin/listmonk --config /etc/listmonk/config.toml
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
[Install]
WantedBy=multi-user.targetListmonk தனது கோப்பு முறைமை மீடியா பதிவேற்றப் பாதை உள்ளிட்ட சார்புப் பாதைகளை (relative paths) இதைக் கொண்டே தீர்மானிப்பதால் WorkingDirectory முக்கியமானது. After=postgresql.service என்பது தொடக்கத்தை மட்டுமே வரிசைப்படுத்துகிறது, அது Postgres இணைப்புகளை ஏற்கும் வரை காத்திருக்காது. எனவே, Listmonk மிக விரைவாகத் தொடங்கி இணைக்க முடியாமல் போகும் சூழலை Restart=on-failure கையாள்கிறது.
sudo systemctl daemon-reload
sudo systemctl enable --now listmonk
ss -ltnp | grep 9000
curl -sI http://127.0.0.1:9000/ss கட்டளையானது 127.0.0.1:9000-ஐ LISTEN நிலையில் காட்ட வேண்டும். curl ஏதேனும் ஒரு HTTP status line-ஐத் தருகிறது என்றால், server பதிலளிக்கிறது என்று பொருள். curl கட்டளை Connection refused பிழையுடன் தோல்வியடைந்தால், தொடக்கத்தின் போதே process முடிந்துவிட்டது என்று பொருள்; அதற்கான காரணத்தை journalctl -u listmonk -n 50 --no-pager விளக்கும். enable --now என்பது reboot-க்குப் பிறகும் நிலைத்திருக்கும் பகுதி என்பதை நினைவில் கொள்க: கைமுறையாகத் தொடங்கப்பட்ட ஒரு process, அடுத்த kernel மேம்படுத்தலுக்குப் பிறகு நீக்கப்பட்டுவிடும்.
Nginx மற்றும் TLS-ஐ முன்னால் அமைத்தல்
Listmonk loopback-ல் plain HTTP-ஐ மட்டுமே கையாளும், எனவே Nginx மூலம் TLS (transport layer security) termination செய்து கோரிக்கைகளை forward செய்ய வேண்டும்.
server {
listen 443 ssl;
server_name lists.example.com;
client_max_body_size 25m;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Subscriber imports மற்றும் media uploads ஆகியவை file posts என்பதால் client_max_body_size-ஐ அதிகரிக்க வேண்டும். Nginx இயல்பாகவே 1 MB-க்கு மேல் உள்ள கோப்புகளை 413 Request Entity Too Large பிழையுடன் நிராகரிக்கும். Certbot மூலம் certificate-ஐப் பெறவும்; இதுவே listen 443 ssl வரிகளையும், port 80-லிருந்து redirect செய்யும் அமைப்புகளையும் தானாகவே எழுதும்: இதற்கான வழிமுறைகள் Nginx-க்கான Let's Encrypt certificate வழிகாட்டியில் உள்ளன. Port 80 மற்றும் 443-ஐத் திறந்து வைக்கவும், port 9000-ஐ மூடி வைக்கவும், ஏனெனில் proxy இதை loopback வழியாகவே அணுகும். Firewall இன்னும் அமைக்கப்படவில்லை எனில், ufw firewall அடிப்படைகள் மூலம் தொடங்கவும்.
பின்பு, admin panel-ஐத் திறந்து Settings-ல் root URL-ஐ https://lists.example.com என அமைக்கவும். புதிய நிறுவல்கள் http://localhost:9000 என்ற மதிப்பைக் கொண்டிருக்கும். Listmonk மின்னஞ்சல்களில் சேர்க்கும் ஒவ்வொரு unsubscribe link மற்றும் media URL-லும் இந்த மதிப்பையே எழுதும். இதை மாற்றும் முன் campaign ஒன்றை அனுப்பினால், ஒவ்வொரு பெறுநருக்கும் அவர்களின் சொந்த கணினியைக் குறிக்கும் இணைப்புகள் செல்லும். இவை வாசகர்களுக்குச் சரியாகச் செயல்படாது, மேலும் spam filter-கள் இதைத் தங்கள் domain-ஐச் சரியாக அமைக்கத் தெரியாத அனுப்பும் முகவரியாகக் கருதும்.
config.toml-ல் இல்லாத SMTP-ஐ இணைத்தல்
config.toml-ல் SMTP பகுதிக்காகத் தேடினால், அது உங்களுக்குக் கிடைக்காது. மின்னஞ்சல் அமைப்புகள் database-ல், settings அட்டவணையில் சேமிக்கப்பட்டுள்ளன. அவற்றை நீங்கள் admin panel-ல் உள்ள Settings மற்றும் SMTP பகுதிக்குச் சென்று மாற்ற வேண்டும். இதனால்தான் உருவாக்கப்பட்ட கோப்பு மிகச் சிறியதாக உள்ளது; மேலும், SMTP மாற்றங்களுக்கு server-ஐ restart செய்ய வேண்டிய அவசியமும் இல்லை.
SMTP server-ஐப் பொறுத்தவரை இரண்டு தெளிவான வழிகள் உள்ளன. நீங்களே சொந்தமாக ஒரு server-ஐ இயக்கலாம்; இதில் அதன் நற்பெயருக்கு (reputation) நீங்களே முழுப் பொறுப்பு. இது ஒரு தனிப்பட்ட பெரிய பணி: Mailcow மூலம் சொந்தமாக மின்னஞ்சல் server-ஐ இயக்குதல் என்ற கட்டுரை இது குறித்து விளக்குகிறது. அல்லது Listmonk-ஐ ஒரு transactional relay-உடன் இணைத்து, IP நற்பெயரைப் பராமரிக்கும் பொறுப்பை மற்றவர்களிடம் விட்டுவிடலாம்.
எந்த வழியைத் தேர்ந்தெடுத்தாலும், STARTTLS உடன் port 587-ஐ அல்லது implicit TLS உடன் port 465-ஐப் பயன்படுத்தவும். outbound port 25-ஐப் பயன்படுத்தத் திட்டமிட வேண்டாம். பெரும்பாலான VPS நிறுவனங்கள் புதிய கணக்குகளுக்கு இயல்பாகவே இந்த port-ஐத் தடுத்து வைத்திருக்கும். தடுக்கப்பட்ட port 25, ஒரு hung connection போலவே தோன்றும்; ஏனெனில் packets நிராகரிக்கப்படாமல் (refused) கைவிடப்படுவதால் (dropped), client விரைவாகத் தோல்வியடைவதற்குப் பதிலாக timeout ஆகும் வரை காத்திருக்கும்.
அதை நம்புவதற்கு முன் சோதித்துப் பார்க்கவும். ஒரு list-ஐ உருவாக்கி, உங்கள் மின்னஞ்சல் முகவரியைச் சந்தாதாரராகச் சேர்த்து, ஒரு பெறுநருக்கு மட்டும் campaign-ஐ அனுப்பிப் பார்க்கவும். பெறப்பட்ட செய்தியைத் திறந்து அதன் முழு headers-ஐயும் வாசிக்கவும். பெறுநர் தரப்பில் சேர்க்கப்படும் Authentication-Results header, SPF மற்றும் DKIM சரிபார்ப்பு வெற்றி பெற்றதா என்பதை உங்களுக்குத் தெரிவிக்கும்.
மின்னஞ்சல் சென்றடைவதே முழுமையான பணி
Listmonk செய்தியை உருவாக்கி, பட்டியலைப் பராமரித்து, மின்னஞ்சலை அனுப்புகிறது. அந்த மின்னஞ்சல் inbox-ஐச் சென்றடையுமா என்பதை, அனுப்பும் IP முகவரி மற்றும் domain-ஐ வைத்து மின்னஞ்சல் பெறும் சேவை நிறுவனங்களே தீர்மானிக்கின்றன. புதிய VPS IP-க்கு எந்தவொரு வரலாறும் இருக்காது; வரலாறே இல்லாத முகவரிகளை அனைத்து பெரிய மின்னஞ்சல் சேவை நிறுவனங்களும் சந்தேகத்திற்குரியதாகவே கருதும்.
கீழ்க்கண்ட நான்கு விஷயங்கள் கட்டாயமானவை:
- உங்கள் domain-லிருந்து மின்னஞ்சல் அனுப்ப அனுமதிக்கப்பட்ட host-ஐக் குறிப்பிடும் SPF (sender policy framework) TXT record.
- DKIM (domainkeys identified mail) key, இது ஒரு TXT record-ஆகப் பதிவேற்றப்பட வேண்டும். மின்னஞ்சலில் கையொப்பமிடும் பணி Listmonk-ஆல் அல்லாமல், mail server-ஆல் செய்யப்பட வேண்டும்.
- DMARC (domain based message authentication, reporting and conformance) record, இது SPF மற்றும் DKIM தோல்வியடையும் போது என்ன செய்ய வேண்டும் என்பதை மின்னஞ்சல் பெறுநர்களுக்குத் தெரிவிக்கும்.
- Listmonk வாசிக்கும் வகையிலான ஒரு bounce mailbox. இதன் மூலம், மின்னஞ்சலை நிராகரிக்கும் முகவரிகள் பட்டியலில் இருந்து நீக்கப்படும்; இல்லையெனில் அவை மீண்டும் மீண்டும் அனுப்ப முயற்சி செய்யப்படும்.
ஆரம்பத்தில் மின்னஞ்சல்களை மெதுவாக அனுப்பவும். இதுவரை மின்னஞ்சல் அனுப்பாத ஒரு domain, திடீரென ஒரு மணி நேரத்தில் பத்தாயிரம் மின்னஞ்சல்களை அனுப்பினால், அது ஒரு compromised account போலவே கருதப்படும்; எனவே அது spam-ஆக வடிகட்டப்படும். உங்கள் மின்னஞ்சல்களைத் தொடர்ந்து வாசிக்கும் subscribers-க்கு முதலில் அனுப்பி, நாட்கணக்கில் மின்னஞ்சல் எண்ணிக்கையை படிப்படியாக உயர்த்தவும்.
ஒவ்வொரு template-லும் கட்டாயம் unsubscribe link இருக்க வேண்டும். Listmonk template-ல் அது {{ UnsubscribeURL }} ஆகும், மேலும் campaign-ன் உள்ளடக்கம் {{ template "content" . }} இருக்கும் இடத்தில் அமையும். இது ஒவ்வொரு template-லும் சரியாக ஒருமுறை மட்டுமே இடம்பெற வேண்டும். unsubscribe link இல்லாத campaign-ல், பயனர்கள் unsubscribe செய்வதற்குப் பதிலாக spam புகார் அளிப்பார்கள். நீங்கள் பல வாரங்களாகக் கட்டமைத்த sending reputation-ஐ இழக்க, இந்த spam புகார்களே மிக விரைவான வழியாகும்.
காப்புப்பிரதிகள் (Backups) மற்றும் மீட்டெடுப்பிற்குத் தேவையானவை
சர்வரிலிருந்து இரண்டு விஷயங்கள் வெளியேற்றப்பட வேண்டும்: database dump மற்றும் config.toml. நீங்கள் campaigns-ல் படங்களை பதிவேற்றினால், media directory-யையும் சேர்த்துக்கொள்ளுங்கள்.
sudo -u postgres pg_dump -Fc listmonk > listmonk-$(date +%F).dumpஅந்த dump-ல் subscribers, campaigns, templates மற்றும் SMTP credentials உள்ளிட்ட அனைத்து அமைப்புகளும் உள்ளன. எனவே, அதை encrypt செய்து இந்த சர்வரிலிருந்து தள்ளி வையுங்கள். இதைத் திட்டமிடுவது ஏற்கனவே தீர்க்கப்பட்ட ஒரு சிக்கல்: encrypted restic backups to remote storage என்பதைப் பார்க்கவும். config.toml என்பது சில வரிகள் மட்டுமே, ஆனால் அதில் database password இருப்பதால், அதையும் அதே முறையில் கையாளவும்.
மேம்படுத்தல்கள் (Upgrades) ஒரு குறிப்பிட்ட வரிசையைப் பின்பற்றுகின்றன. service-ஐ நிறுத்துங்கள், dump எடுங்கள், /usr/bin-ல் உள்ள binary-ஐ மாற்றுங்கள், listmonk --config /etc/listmonk/config.toml --upgrade-ஐ இயக்குங்கள், பிறகு service-ஐத் தொடங்குங்கள். Schema migrations முன்னோக்கி மட்டுமே செல்லும், எனவே அந்த dump மட்டுமே நீங்கள் பின்னோக்கிச் செல்வதற்கான ஒரே வழியாகும்.
Listmonk ஏன் தொடங்கத் தவறுகிறது?
முதலில் journalctl -u listmonk -n 50 --no-pager கட்டளையைப் பயன்படுத்தி journal-ஐப் படிக்கவும். தொடக்கத் தோல்விகள் பெரும்பாலும் [db] தொகுதியில் ஒரே வரியில் குறிப்பிடப்பட்டிருக்கும்.
pq: password authentication failed for user "listmonk" என்பது [db] கோப்பில் உள்ள கடவுச்சொல், Postgres role-உடன் பொருந்தவில்லை என்று பொருள். pq முன்னொட்டு என்பது, Postgres driver சர்வர் நிராகரிப்பைத் தெரிவிப்பதைக் குறிக்கிறது; அதாவது, configuration சரியாக வாசிக்கப்பட்டது, ஆனால் credentials தவறானவை. sudo -u postgres psql -c "ALTER USER listmonk WITH PASSWORD 'new-password';" மூலம் role-ஐ reset செய்து, அதே string-ஐ கோப்பில் உள்ளிடவும்.
pq: database "listmonk" does not exist என்பது [db] கோப்பில் உள்ள database மதிப்பு, உண்மையான database-ஐக் குறிப்பிடவில்லை என்று பொருள். sudo -u postgres psql -l கட்டளை சர்வரில் உள்ளவற்றை பட்டியலிடும், அதில் நீங்கள் தவறுதலாக உள்ளிட்ட எழுத்துப்பிழையையும் காணலாம்.
--install செயல்பாட்டின் போது ஏற்படும் permission denied என்பது, role-ஆல் இணைக்க முடிகிறது, ஆனால் அந்த database-க்கு அது உரிமையாளர் (owner) இல்லை என்று பொருள்; எனவே, அதில் tables-ஐ உருவாக்க முடியாது. sudo -u postgres psql -c "ALTER DATABASE listmonk OWNER TO listmonk;" மூலம் இதைச் சரிசெய்து, install-ஐ மீண்டும் இயக்கவும்.
Service தொடங்கவே இல்லை மற்றும் journal-ல் configuration கோப்பு குறிப்பிடப்பட்டுள்ளது. listmonk பயனராக இயங்கும் ஒரு process, 600 mode-ல் உள்ள root:root கோப்பை config.toml ஆகத் திறக்க முடியாது. stat -c '%U:%G %a' /etc/listmonk/config.toml கட்டளை root:listmonk 640 என்று காட்ட வேண்டும், மேலும் அதற்கு மேல் உள்ள directory root:listmonk 750 ஆக இருக்க வேண்டும்.
Panel இயங்குகிறது ஆனால் மின்னஞ்சல் வரவில்லை. இது தொடக்கப் பிரச்சனை அல்ல. முதலில் Settings மற்றும் SMTP-ஐச் சரிபார்க்கவும், பின்னர் admin panel-ல் உள்ள campaign log-ஐப் பார்க்கவும்; ஒவ்வொரு முயற்சிக்கும் மின்னஞ்சல் சர்வர் வழங்கிய பிழை அங்கு பதிவாகியிருக்கும்.
FAQ
Listmonk-ஐப் பயன்படுத்த எனக்குச் சொந்தமாக mail server தேவையா?
இல்லை. Listmonk ஒரு mail server அல்ல. உங்கள் மின்னஞ்சல்களைப் பெற்று விநியோகம் செய்யும் ஒரு server-க்கான SMTP நற்சான்றிதழ்கள் (credentials) இதற்குத் தேவை. இது ஒரு transactional relay-ஆகவோ அல்லது நீங்கள் சொந்தமாக இயக்கும் mail server-ஆகவோ இருக்கலாம். அந்த நற்சான்றிதழ்களை admin panel-ல் உள்ள Settings மற்றும் SMTP பிரிவில் அமைக்கவும். config.toml-ல் அமைக்க வேண்டாம், ஏனெனில் மின்னஞ்சல் அமைப்புகள் database-ல் சேமிக்கப்படுகின்றன. பெரும்பாலான VPS வழங்குநர்கள் புதிய கணக்குகளில் outbound port 25-ஐத் தடுப்பதால், STARTTLS உடன் port 587-ஐ அல்லது implicit TLS உடன் port 465-ஐப் பயன்படுத்தவும்.
எனது campaign-ல் உள்ள இணைப்புகள் ஏன் localhost:9000-ஐக் குறிக்கின்றன?
root URL அமைப்பு இன்னும் அதன் இயல்புநிலை மதிப்பிலேயே (http://localhost:9000) உள்ளது. ஒரு campaign அனுப்பப்படும்போது, unsubscribe இணைப்புகள் மற்றும் media URL-களில் Listmonk அந்த மதிப்பைத்தான் எழுதும். admin panel-ல் Settings-ஐத் திறந்து, root URL-ஐ உங்கள் உண்மையான HTTPS முகவரிக்கு மாற்றிச் சேமிக்கவும். ஏற்கனவே அனுப்பப்பட்ட செய்திகளைத் திருத்த முடியாது, எனவே ஒரு test campaign-ஐ உங்களுக்கு அனுப்பி, அதில் உள்ள unsubscribe இணைப்பைச் சரிபார்த்த பிறகு உண்மையான பட்டியலுக்கு மின்னஞ்சல் அனுப்பவும்.
--install-ஐ மீண்டும் இயக்கினால் எனது சந்தாதாரர்கள் (subscribers) அழிந்துவிடுவார்களா?
ஆம். --install என்பது முதல்முறை நிறுவும் கருவியாகும், இது ஏற்கனவே உள்ள Listmonk schema-வை நீக்கிவிடும். --yes என்பது உங்களை எச்சரிக்கும் prompt-ஐ நீக்கிவிடும். இரண்டு முறை இயங்கக்கூடிய எந்தவொரு script-லும் --install --idempotent --yes-ஐப் பயன்படுத்தவும்; இது tables ஏற்கனவே இருக்கும்போது எதையும் செய்யாது. புதிய release-ல் schema மாற்றங்களைப் பயன்படுத்த, service-ஐ நிறுத்திவிட்டு, pg_dump எடுத்துவிட்டு, பின் --upgrade-ஐ இயக்கவும்.
listmonk பயனருக்கான கடவுச்சொல் அங்கீகாரம் தோல்வியடைந்ததாக Listmonk ஏன் கூறுகிறது?
/etc/listmonk/config.toml-ன் [db] தொகுப்பில் உள்ள கடவுச்சொல், அதே பெயரைக் கொண்ட Postgres role-ன் கடவுச்சொல்லுடன் பொருந்தவில்லை. journal வரியானது pq: password authentication failed for user "listmonk" ஆகும், மேலும் pq என்பது server-ன் நிராகரிப்பைத் தெரிவிக்கும் Postgres driver ஆகும்; அதாவது config file கண்டறியப்பட்டு வாசிக்கப்பட்டது என்று பொருள். sudo -u postgres psql -c "ALTER USER listmonk WITH PASSWORD 'new-password';" மூலம் அந்த role-ன் கடவுச்சொல்லை மாற்றியமைத்து, அதே string-ஐ config file-ல் எழுதிவிட்டு, பின் sudo systemctl restart listmonk-ஐ இயக்கவும்.