Agenda: postfix-exercise.txt

File postfix-exercise.txt, 8.2 KB (added by admin, 7 years ago)
Line 
1PacNOG 10
2Track 2
3
4Postfix exercise
5----------------
6
7Notes
8------
9
10* Commands preceded with "$" imply that you should execute the command as
11  a general user - not as root.
12* Commands preceded with "#" imply that you should be working as root using
13  "sudo"
14* Commands with more specific command lines (e.g. "RTR-GW>" or "mysql>")
15  imply that you are executing commands on remote equipment, or within
16  another program.
17
18
190. First, let's install postfix
20
21        $ sudo -s
22
23        # apt-get install postfix
24
25        When asked what kind of configuration, choose: "Internet site"
26
27        We'll also need telnet to manually connect to the port 25
28
29        # apt-get install telnet
30
31        And, we'll also need a simple mail program to read the mail we receive,
32        so let's install "mutt":
33
34        # apt-get install mutt
35
361. Make sure that postfix is running:
37
38        # ps ax | grep postfix
39
40        You should see the "master" process for postfix running
41
422. Make sure your neighbour has started postfix, too, and try to send a mail
43   manually via their machine.  If you are pcX, and they are pcY, you will
44   run "telnet pcY 25".
45
46   Replace "myemailaddress@at.home" with your real email address.  What YOU
47   type is marked with ->  (DON'T type "->", this is just to point the
48   lines!).  Remember to replace X and Y with the number of your PC and
49   your neighbor's respectively.
50
51
52->      root@pcX:~# telnet pcY 25
53        Trying 10.10.0.Y...
54        Connected to pcY.ws.nsrc.org.
55        Escape character is '^]'.
56        220 pcY.ws.nsrc.org ESMTP Postfix (Ubuntu)
57->      HELO pcX.ws.nsrc.org
58        250 pctest.ws.nsrc.org
59->      MAIL From: <sysadm@pcX.ws.nsrc.org>
60        250 2.1.0 Ok
61->      RCPT To: <myemailaddress@at.home>
62        554 5.7.1 <myemailaddress@at.home>: Relay access denied
63
64
65   Notice that your mail is rejected.  Why ?
66
67   Now, try and send mail to the sysadm user on pcY:
68
69->      root@pcX:~# telnet pcY 25
70        Trying 10.10.0.90...
71        Connected to pcY.ws.nsrc.org.
72        Escape character is '^]'.
73        220 pcY.ws.nsrc.org ESMTP Postfix (Ubuntu)
74->      HELO pcX.ws.nsrc.org
75        250 pcY.ws.nsrc.org
76->      MAIL From: <sysadm@pcX.ws.nsrc.org>
77        250 2.1.0 Ok
78->      RCPT To: <sysadm@pcY.ws.nsrc.org>
79        250 2.1.5 Ok
80->      DATA
81        354 End data with <CR><LF>.<CR><LF>
82->      Subject: A test mail for pcY
83->      From: sysadm@pcX.ws.nsrc.org
84->      To: sysadm@pcY.ws.nsrc.org
85->
86->      Hello!
87->      .
88        250 2.0.0 Ok: queued as 818D07FE9C
89->      quit
90        221 2.0.0 Bye
91
92   Repeat this with 2-3 difference neighbors around you.
93
943. If the above worked, your neighbor should have received mail.
95
96        To check it, ask your neighbor, as the sysadm user, to run the "mutt"
97        command:
98
99        $ mutt
100
101        (if it asks you to create "/home/sysadm/Mail", say 'yes')
102
103        You are now using "mutt", a simple mail client.  You can use the arrows
104        to move up and down, and press <RETURN> on a mail you want to read.
105
106        You should be able to see the mail you sent to the sanog user.
107
108        To quit: press 'q', and 'q' again to leave the program.
109
110        Note: If you are lost, you can always press the '?' key to get help
111        on using mutt.
112
113        Your neighbor should see one mail in the index - press SPACE or RETURN to
114        see it.
115
116        If they don't see the mail, double check that you sent the mail to the
117        right PC!
118
119        To quit, press i (index), then q (quit) or x (exit).
120
121        You should check now, that YOU have received mail from one of your
122        neighbors!
123
1244. You saw in step 2 that you could only send mail to the local domain of the
125   pcY when you connected to it with telnet.  What if we want to use a mail
126   server so that you can send mail to OTHER domains, on the internet ?
127   
128   Let's make some small changes to the config file for postfix, so that you
129   can do this:
130
131        # cd /etc/postfix/
132
133        # editor main.cf
134
135        Take a look at some of the parameters, especially the last section, and
136        find the line:
137
138mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
139
140... and add this to the end of it:
141
142        10.10.0.0/24
143
144... so that the line becomes:
145
146mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.10.0.0/24
147
148        Save and quit, and check the configuration:
149
150        # postfix check
151       
1525. Restart postfix, and check that mail is working:
153
154        # service postfix restart
155
156        # ps ax | grep postfix
157
1586. Ok, now we're going to send a mail to the outside world, using your
159   neighbor's PC again, like we tried before in step 2 (to
160   myemailaddress@at.home):
161
162->      root@pcX:~# telnet pcY 25
163        Trying 10.10.0.Y...
164        Connected to pcY.ws.nsrc.org.
165        Escape character is '^]'.
166        220 pcY.ws.nsrc.org ESMTP Postfix (Ubuntu)
167->      HELO pcX.ws.nsrc.org
168        250 pctest.ws.nsrc.org
169->      MAIL From: <sysadm@pcX.ws.nsrc.org>
170        250 2.1.0 Ok
171->      RCPT To: <myemailaddress@at.home>
172        250 2.1.5 Ok
173->      DATA
174        354 End data with <CR><LF>.<CR><LF>
175->      Subject: A test mail for myself at home
176->      From: sysadm@pcX.ws.nsrc.org
177->      To: myemailaddress@at.home
178->
179->      Hello to myself!
180->      .
181        250 2.0.0 Ok: queued as 3BC377FE9E
182
1837. Check your mail at home (or Gmail, or hotmail, or whatever you use...) and
184   check that you received the mail.  Did you ?
185
186   Either way, ask your neighbor to run:
187
188   $ tail /var/log/mail.log
189
190   You should see something like:
191
192Nov 23 21:32:16 pctest postfix/smtpd[32174]: connect from noc.ws.nsrc.org[10.10.0.250]
193Nov 23 21:32:48 pctest postfix/smtpd[32174]: 3BC377FE9E: client=noc.ws.nsrc.org[10.10.0.250]
194Nov 23 21:32:53 pctest postfix/cleanup[32178]: 3BC377FE9E: message-id=<>
195Nov 23 21:32:53 pctest postfix/qmgr[32144]: 3BC377FE9E: from=<sysadm@pc3.ws.nsrc.org>, size=223, nrcpt=1 (queue active)
196Nov 23 21:32:53 pctest postfix/smtpd[32174]: disconnect from noc.ws.nsrc.org[10.10.0.250]
197Nov 23 21:32:57 pctest postfix/smtp[32179]: 3BC377FE9E: to=<regnauld@gmail.com>, relay=gmail-smtp-in.l.google.com[74.125.53.27]:25, delay=14, delays=10/0.02/2.7/1.6, dsn=2.0.0, status=sent (250 2.0.0 OK 1322083977 h3si4968239pbm.236)
198Nov 23 21:32:57 pctest postfix/qmgr[32144]: 3BC377FE9E: removed
199
200   ... do you see your mail there ?
201
2029. Try to send mail again like in step 6, but try something different for the
203   MAIL From: <sysadm@nonexist.ws.nsrc.org>.  Does it work ?  Why ?
204
20510.  We're going to send mail again, but this time we're going to use the "mutt"
206        command:
207
208        (as sysadm)
209        # su - sysadm
210        $ echo "testing mail" | mail -s "test" sysadm@pcY.ws.nsrc.org
211        $ tail /var/log/mail.log
212
213        You should see something like this:
214
215Nov 23 21:23:31 pcX postfix/pickup[32143]: 76DB67FE9E: uid=1000 from=<sysadm>
216Nov 23 21:23:31 pcX postfix/cleanup[32166]: 76DB67FE9E: message-id=<20111123212331.GA32155@pcX.ws.nsrc.org>
217Nov 23 21:23:31 pcX postfix/qmgr[32144]: 76DB67FE9E: from=<sysadm@pcX.ws.nsrc.org>, size=438, nrcpt=1 (queue active)
218Nov 23 21:23:31 pcX postfix/smtp[32168]: 76DB67FE9E: to=<sysadm@pcY.ws.nsrc.org>, relay=pcY.ws.nsrc.org[10.10.0.250]:25, delay=0.48, delays=0.29/0.01/0.07/0.1, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as F21281FF72)
219Nov 23 21:23:31 pcX postfix/qmgr[32144]: 76DB67FE9E: removed
220
22111. Ask your neighbor to read the mail he should have received!
222
223        Note: do this as the "sysadm" user!
224
225        $ mutt
226
227        (again, if mutt asks you
228
229        /home/sysadm/Mail does not exist. Create it? ([yes]/no):
230       
231        ... answer 'yes')
232
23312. Let's modify the /etc/aliases file, so we can receive mail for
234   other system users into our mailbox:
235
236        (As root!)
237
238        # editor /etc/aliases
239
240        Add the line:
241
242root: sanog
243
244        root:   sysadm
245
246        Exit & save the file, and run the "newaliases" command:
247
248        # newaliases
249
250
25113. Try sending mails to the "postmaster" and "root" users on your PC:
252
253        # su - sysadm
254        $ echo "test to postmaster" | mutt -s "test postmaster" postmaster@localhost
255        $ echo "test to root" | mutt -s "test root" root@localhost
256
257        Send another mail but this time, to postmaster@pcX.ws.nsrc.org (your PC:)
258
259        $ echo "test to postmaster" | mail -s "test postmaster" postmaster@pcX.ws.nsrc.org
260
261        Notice how both work (use mutt, check the /var/log/mail.log)
262
263    Check that you received these mails
264
265        $ mutt
266
267        Check that all mails have been received
268
26914. Reading headers
270
271        While in mutt, look at a mail, then press the 'h' key -- while displaying
272        a mail, this will toggle between showing "full" headers, and limited
273        headers.
274
275        Use this feature to inspect the mails in your mailbox.
276
277        Note the "To:" and "X-Original-To:" headers.
278
279
28015. Send mail to other users in the class!
281
282        Since you were able to send mail to your OWN machine, then you can also
283        send mails to other users in the class:
284
285        $ echo "hello from pcX" | mail -s "mail from pcX" sysadm@pcY.ws.nsrc.org
286        $ echo "hello from pcX" | mail -s "mail from pcX" sysadm@pxZ.ws.nsrc.org
287
288
289etc...
290