Enviar mail des de la línia de comandes
Contingut
sendmail (intent no reeixit)
$ sudo apt-get install mailx $ sudo apt-get install sendmail
Altres paquets que també serveixen per enviar mails: nail, mutt, exim4, postfix
joan@ubuntu:/etc/mail$ sudo ps aux | grep sendmail root 9173 0.0 0.1 9020 1724 ? Ss 13:42 0:00 sendmail: MTA: accepting connections
Fitxer de configuració del sendmail: /etc/mail/sendmail.cf
$ sudo cp sendmail.cf sendmail.cf.old $ sudo joe /etc/mail/sendmail.cf
faig una còpia perquè en editar el fitxer el primer que diu és no tocar aquest fitxer.
# "Smart" relay host (may be null) smtp.indicerural.com #aquí posava DC # who I masquerade as (null for no masquerading) (see also $=M) indicerural.com #DMubuntu
però no va bé, perquè quan reinicio el servei:
/etc/init.d$ sudo ./sendmail restart * Restarting Mail Transport Agent (MTA) sendmail 554 5.0.0 /etc/mail/sendmail.cf: line 111: unknown configuration line "smtp.indicerural.com" 554 5.0.0 /etc/mail/sendmail.cf: line 156: unknown configuration line "indicerural.com"
Fent una mica de documentació es veu que sendmail és difícil de configurar, i que hi ha millors opcions com ara exim
exim4
Exim4 is is another Message Transfer Agent (MTA) developed at the University of Cambridge for use on Unix systems connected to the internet. Exim can be installed in place of sendmail, although the configuration of exim is quite different to that of sendmail.
http://bobbyallen.wordpress.com/2007/04/30/how-to-install-exim4-on-ubuntu-as-a-smarthost/
Instal.lació
$ sudo apt-get install exim4 exim4-base exim4-config
he hagut de canviar el sources.list per tal de poder instal.lar, he posat:
deb http://archive.ubuntu.com/ubuntu gutsy universe
Configuració
Aquí ve la part complicada.
$ sudo dpkg-reconfigure exim4-config
comença una interfície gràfica que ens va fent preguntes. Al final, tots els paràmetres es guarden en el fitxer /etc/exim4/update-exim4.conf.conf
Jo vull configurar el meu sistema per que el compte administrador@indicerural.com sigui el que envia els correus (el meu servidor de correu sortint és smtp.indicerural.com, el login i pwd del compte són sn7333/****, i el servidor requereix autentificació (el mateix login i pwd)
en aquest enllaç hi ha una explicació més detallada del que ens estan preguntant.
El que s'ha de contestar és:
- General type of mail configuration:
- mail sent by smarthost; received via SMTP or fetchmail
- el meu smarthost és el servidor de correu extern: smtp.indicerural.com. És el que realment enviarà els mails als destinataris finals.
- System mail name
- The "mail name" is the domain name used to "qualify" mail addresses without a domain name.
- poso indicerural.com
- també puc posar exemple.org i el resultat serà el mateix
- Nota: poso exemple.org perquè això és el que tenia en el /etc/host. Quan elimino aquesta entrada, el mail deixa de funcionar, i torna a funcionar quan reconfiguro el mail i poso empresalibre.org, que és el que ara tinc en el /etc/host
- IP addresses to listen on for incoming SMTP connections
- en blanc, no és el meu cas
- Other destinations for which mail is accepted
- en blanc, no és el meu cas
- Domains to relay mail for
- en blanc, no és el meu cas
- Machines to relay mail for
- en blanc, no és el meu cas
- IP address or host name of the outgoing smarthost
- aquí és on ficaré el meu servidor SMTP
- smtp.indicerural.com::587 -> no funciona! hauria de ficar una entrada en /etc/hosts que fes de DNS
- 217.76.146.62 -> per defecte utilitza el port 25
- 217.76.146.62::587 -> pel port 587 també funciona (l'ajuda d'Arsys diu que el compte s'ha de configurar pel port 587, però jo tota la vida l'he configurat pel port 25. De les dues maneres funciona).
- Hide local mail name in outgoing mail
- deixem el que hi ha per defecte. The headers of outgoing mail can be rewritten to make it appear to have been generated on a different system, replacing the local host name in From, Reply-To, Sender and Return-Path.
- Delivery method for local mail
- els mails es guardaran a /var/mail/ (és l'opció per defecte)
- Split configuration into small files
- No
És important utilitzar aquesta eina de configuració i no editar directament el fitxer update-exim4.conf.conf, perquè en realitat hi ha altres fitxers de configuració i és un procés més complicat que editar el fitxer.
Després de configurar es pot executar la següent comanda per generar el fitxer de configuració mestre:
$ sudo update-exim4.conf
El fitxer de configuració mestre es guarda a /var/lib/exim4/config.autogenerated. Tanmateix, sembla ser que aquest pas no és especialment necessari
El servidor requereix autentificació:
Using Exim as SMTP-AUTH client
$ sudo joe /etc/exim4/passwd.client
afegeixo la línia
217.76.146.62:sn7333:**** -> si vull enviar com a administrador@indicerural.com #217.76.146.62:sq5532:**** -> si vull enviar com a reservas@indicerural.com
però compte, només una de les dues (com s'ha de fer per tenir diversos comptes disponibles per a poder enviar mail?)
Quan configuro d'aquesta manera el dimoni s'atura i s'engega automàticament. Si ho vull fer manualment:
$ sudo /etc/init.d/exim4 start # o bé restart
Abans de provar el Servidor de Correu (de fet no és un servidor de correu), instal.larem el paquet mailutils que ens instal.la una sèrie d'utilitats, com ara mail (la comanda pròpia per enviar el mail) o mailq (per veure la cua de missatges que encara no s'han enviat)
$ sudo apt-get install mailutils
La primera prova que fem és enviar un mail en local:
joan$ mail joan #joan s'envia un mail a ell mateix joan$ mail root #joan envia un mail a root
puc veure els mails rebuts a
$ cat /var/mail/joan
ara bé encara no puc enviar un mail suplantant administrador@indicerural.com.
Després de molt barallar-me ho he aconseguit, a partir d'una informació que només he trobat a:
http://www.schabell.org/2007/01/how-to-setup-exim4-on-ubuntu-linux.html
Ens falta editar el fitxer /etc/email-addresses
joan$ sudo joe /etc/email-addresses
afegeixo la línia:
joan:administrador@indicerural.com
on joan ha de ser un compte del sistema. És a dir, mapejo joan amb administrador@indicerural.com this file contains email addresses to use for outgoing mail
Proves d'enviar un correu
- mail <destinatari>
Amb la comanda mail tinc una sessió interactiva, que em pregunta el CC, tema i cos del missatge
$ mail administrador@indicerural.com #a qui vull enviar el mail
Per acabar d'escriure el missatge, cliclo Enter i un punt <.> (type a single period), i el missatge s'envia a la cua
Es pot comprovar si el missatge encara està a la cua fent
$ sudo mailq
- mail en una sola línia
$ echo "cos del missatge" | mail -s "assumpte" reservas@indicerural.com,joan_quintana@yahoo.com
Recordem que podem utilitzar varies línies amb el caràcter \:
$ echo "aquest és un cos del missatge que pot ser molt llarg" \ > | mail -s "assumpte també pot ser més llarg..." \ > administrador@indicerural.com
per enviar un fitxer amb adjunts, necessito instal.lar el paquet biabam
$ sudo apt-get install biabam
no ho he fet perquè no el troba en els repositoris. Per enviar el mail seria:
$ echo "cos del missatge" | biabam /ruta/al/fitxer.tgz -s "assumpte" destinatari1@email.com, destinatari2@email.com
En principi només es pot enviar un adjunt (que òbviament pot ser tun empaquetat)
Recordar que aquesta configuració és per enviar missatges, no per rebre'n
Canviar el fitxer /etc/hosts
edito /etc/hosts
$ sudo joe /etc/hosts 217.76.146.62 smtp.indicerural.com
sudo /etc/init.d/networking restart
reconfiguro exim4 posant smtp.indicerural.com en comptes de 217.76.146.62
faig una prova i no em surt
fitxer /etc/exim4/update-exim4.conf.conf
Amb dpkg-reconfigure exim4-config s'escriu en el fitxer update-exim4.conf.conf.
Aquí es mostra la configuració del fitxer que permet que el mail administrador@indicerural.com es pugui connectar al servidor 217.76.146.62 (és el smarthost, el SMTP de indicerural.com) i així pot enviar mails a tothom (per ex, a joan_quintana@yahoo.com)
# /etc/exim4/update-exim4.conf.conf # # Edit this file and /etc/mailname by hand and execute update-exim4.conf # yourself or use 'dpkg-reconfigure exim4-config' # # Please note that this is _not_ a dpkg-conffile and that automatic changes # to this file might happen. The code handling this will honor your local # changes, so this is usually fine, but will break local schemes that mess # around with multiple versions of the file. # # update-exim4.conf uses this file to determine variable values to generate # exim configuration macros for the configuration file. # # Most settings found in here do have corresponding questions in the # Debconf configuration, but not all of them. # # This is a Debian specific file dc_eximconfig_configtype='smarthost' dc_other_hostnames='' dc_local_interfaces='' dc_readhost='ubuntu' dc_relay_domains='' dc_minimaldns='false' dc_relay_nets='' dc_smarthost='217.76.146.62' CFILEMODE='644' dc_use_split_config='false' dc_hide_mailname='false' dc_mailname_in_oh='true' dc_localdelivery='mail_spool'
Aquesta configuració és diferent de si el que jo vull és un servidor de correu propi en el meu servidor. Aleshores no m'hauré de connectar a cap smarthost sinó que és el meu servidor que haurà de fer de smarthost.
Per què és important utilitzar dpkg-reconfigure exim4-config en comptes d'editar el fitxer de configuració directament?
Resposta: si volem editar el fitxer update-exim4.conf.conf, després hem de fer
sudo update-exim4.conf
per generar i emmagatzemar el master configuration file que està a /var/lib/exim4/config.autogenerated.
Configuració amb el compte de gmail
Configuració del compte que tinc amb gmail:
* joanqc@gmail.com/jq**** * pop.gmail.com SSL enabled (port 995) * smtp.gmail.com SSL enabled (port 465) El servidor requiere autenticación (joanqc/jq****)
En el vTiger (CRM), he aconseguit enviar mails cap enfora amb la següent configuració:
* Server name: ssl://smtp.gmail.com:465 * user name: joanqc * password: jq**** * Requires authentification: si
Veure com això ho puc utilitzar per enviar mails des de joanqc@gmail.com en comptes de administrador@indicerural.com
Actualització octubre 2011
S'ha explicat aquest tema en una pràctica de SAD i s'ha actualitzat la informació, fent-ho més simple:
Funciona perfectament la manera més simple de fer-ho (fitxer passwd.client). A més, també funciona enviar adjunts amb uuencode.
creat per Joan Quintana Compte, novembre 2008