1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
|
WEBVTT captioned by sachac
NOTE Introduction
00:00:02.620 --> 00:00:04.799
Hello, my name is Amin Bandali,
00:00:04.800 --> 00:00:06.359
and today I'd like to talk about
00:00:06.360 --> 00:00:08.799
reading and writing emails in GNU Emacs
00:00:08.800 --> 00:00:14.319
using Gnus specifically.
00:00:14.320 --> 00:00:16.879
Gnus has had this sort of reputation
00:00:16.880 --> 00:00:20.599
of being difficult to approach and configure.
00:00:20.600 --> 00:00:23.359
That's understandable
00:00:23.360 --> 00:00:26.319
because it has many, many options
00:00:26.320 --> 00:00:27.679
and major and minor modes
00:00:27.680 --> 00:00:30.679
that interact in different ways with each other.
00:00:30.680 --> 00:00:35.319
And it also doesn't help that Gnus started originally
00:00:35.320 --> 00:00:36.359
as a newsreader
00:00:36.360 --> 00:00:38.759
rather than a mail client.
00:00:38.760 --> 00:00:40.879
So a lot of the terminology that it uses
00:00:40.880 --> 00:00:42.519
is also rooted in that,
00:00:42.520 --> 00:00:45.559
in reading and writing news.
00:00:45.560 --> 00:00:48.119
But nevertheless, with this video and talk,
00:00:48.120 --> 00:00:52.159
I hope to provide a sort
00:00:52.160 --> 00:00:55.759
of very quick introduction
00:00:55.760 --> 00:00:57.539
of starting to use Gnus
00:00:57.540 --> 00:01:00.919
to read and write email and send it.
00:01:00.920 --> 00:01:02.679
We will use Gnus' IMAP support,
00:01:02.680 --> 00:01:06.119
mainly because a lot of people
00:01:06.120 --> 00:01:08.679
these days have email accounts
00:01:08.680 --> 00:01:10.759
with mail service providers
00:01:10.760 --> 00:01:12.039
that support IMAP,
00:01:12.040 --> 00:01:14.319
which is an open standard.
00:01:14.320 --> 00:01:17.479
So it's widely available and supported
00:01:17.480 --> 00:01:19.719
across many different providers
00:01:19.720 --> 00:01:25.239
as well as mail clients or mail user agents as well.
NOTE Demo
00:01:25.240 --> 00:01:30.559
Okay, so let's just jump straight right in.
00:01:30.560 --> 00:01:34.279
I will enter this demo directory that I created
00:01:34.280 --> 00:01:36.919
for the purposes of this demonstration
00:01:36.920 --> 00:01:40.999
and change my home directory to this one
00:01:41.000 --> 00:01:49.839
so that we can safely experiment with Gnus here.
00:01:49.840 --> 00:01:53.979
For this presentation, I've written up
00:01:53.980 --> 00:01:56.839
a quick initialization file or init file
00:01:56.840 --> 00:01:59.719
that I will share afterwards as well
00:01:59.720 --> 00:02:01.639
to get us going with Gnus.
00:02:01.640 --> 00:02:04.519
There's not much to it at the moment.
00:02:04.520 --> 00:02:07.399
Just set up the package archives and
00:02:07.400 --> 00:02:09.479
install the keycast package
00:02:09.480 --> 00:02:14.079
for showing the key presses in the mode line.
00:02:14.080 --> 00:02:15.359
Yeah, that's about it.
00:02:15.360 --> 00:02:16.239
And I'll also define
00:02:16.240 --> 00:02:20.279
a little like inline function +emacs.d
00:02:20.280 --> 00:02:24.079
that allows me to conveniently write
00:02:24.080 --> 00:02:26.639
and have it expanded
00:02:26.640 --> 00:02:29.300
or refer to files and directories, rather,
00:02:29.301 --> 00:02:30.900
paths that we could expand,
00:02:30.901 --> 00:02:32.833
inside my Emacs configuration directory.
00:02:32.834 --> 00:02:37.500
I also have this eval-last-sexp
00:02:37.501 --> 00:02:41.119
bound to a global key,
00:02:41.120 --> 00:02:43.279
so that I will be able to easily
00:02:43.280 --> 00:02:47.519
use it for this talk.
00:02:47.520 --> 00:02:49.959
Okay, let's jump right in.
NOTE Don't panic
00:02:49.960 --> 00:02:52.239
First things first, don't panic.
00:02:52.240 --> 00:02:55.267
And that's actually also the name
00:02:55.268 --> 00:02:58.359
of the very first node
00:02:58.360 --> 00:03:01.559
in the Gnus manual when you open it.
00:03:01.560 --> 00:03:02.839
And it's actually nice.
00:03:02.840 --> 00:03:04.479
I definitely, definitely recommend
00:03:04.480 --> 00:03:07.079
that you look through
00:03:07.080 --> 00:03:10.199
at least the very first couple of chapters of this,
00:03:10.200 --> 00:03:14.199
skim through it, and later on refer to it
00:03:14.200 --> 00:03:16.133
whenever you find something confusing
00:03:16.134 --> 00:03:19.499
or don't understand it.
00:03:19.500 --> 00:03:21.359
But yeah, we'll start
00:03:21.360 --> 00:03:22.399
with these two paragraphs here.
00:03:22.400 --> 00:03:23.639
So again, a Gnus installation
00:03:23.640 --> 00:03:28.119
is basically just a list of one or more servers
00:03:28.120 --> 00:03:30.119
and the subscribed groups from those servers
00:03:30.120 --> 00:03:32.319
and articles in those groups.
00:03:32.320 --> 00:03:34.279
You can already kind of see
00:03:34.280 --> 00:03:39.479
where that influence of a newsreader comes in.
00:03:39.480 --> 00:03:41.839
But yeah, basically what it's saying is that,
00:03:41.840 --> 00:03:43.839
you know, we have one or more servers.
00:03:43.840 --> 00:03:47.079
We can think of them as email servers.
00:03:47.080 --> 00:03:49.359
Groups can be like, we can think
00:03:49.360 --> 00:03:52.959
of them as folders or directories.
00:03:52.960 --> 00:03:55.239
And yeah, articles,
00:03:55.240 --> 00:03:58.559
those would be like our email messages.
NOTE Configuring servers
00:03:58.560 --> 00:03:59.679
With Gnus, we can add
00:03:59.680 --> 00:04:06.119
and configure servers mainly using two variables.
00:04:06.120 --> 00:04:07.919
One of them is the gnus-select-method
00:04:07.920 --> 00:04:11.479
and the other is gnus-secondary-select-methods.
00:04:11.480 --> 00:04:15.759
The first one predates the second one
00:04:15.760 --> 00:04:17.559
and I generally don't recommend using it, because
00:04:17.560 --> 00:04:22.559
first of all, it can only point
00:04:22.560 --> 00:04:26.359
to one server, and that server,
00:04:26.360 --> 00:04:27.879
because it's the primary,
00:04:27.880 --> 00:04:32.559
then Gnus won't add a prefix to its groups,
00:04:32.560 --> 00:04:34.839
so later on, as you get into
00:04:34.840 --> 00:04:36.679
more advanced features of Gnus
00:04:36.680 --> 00:04:38.519
and, for example, want to write rules
00:04:38.520 --> 00:04:42.959
to modify your message composition
00:04:42.960 --> 00:04:47.039
in a way for certain groups, or file mail,
00:04:47.040 --> 00:04:48.799
automatically classify mail,
00:04:48.800 --> 00:04:51.879
this distinction can become
00:04:51.880 --> 00:04:53.959
confusing and annoying.
00:04:53.960 --> 00:04:57.199
My recommendation is to always and only use
00:04:57.200 --> 00:05:01.799
the gnus-secondary-select-methods.
00:05:01.800 --> 00:05:07.319
Yeah, so let's do that here.
00:05:07.320 --> 00:05:10.299
I'm gonna uncomment this portion.
00:05:10.300 --> 00:05:16.419
So here, I set the primary select method to nil,
00:05:16.420 --> 00:05:24.159
and the second one, I define an nnimap server
00:05:24.160 --> 00:05:30.039
of the nnimap backend.
00:05:30.040 --> 00:05:32.439
I give it the name ec25gnus.
00:05:32.440 --> 00:05:35.879
What I want it to do is to
00:05:35.880 --> 00:05:37.799
connect to my mail server,
00:05:37.800 --> 00:05:41.079
which is at this address,
00:05:41.080 --> 00:05:46.239
and fetch emails from it over TLS with this username.
NOTE .authinfo
00:05:46.240 --> 00:05:50.719
And then the passwords or the credentials,
00:05:50.720 --> 00:05:56.839
you can put them in the .authinfo file.
00:05:56.840 --> 00:05:58.799
Normally, you would want to, for example,
00:05:58.800 --> 00:06:03.719
encrypt this file with your GPG key.
00:06:03.720 --> 00:06:06.719
But for this demonstration, I haven't.
00:06:06.720 --> 00:06:10.479
So yeah, the format is the keyword "machine"
00:06:10.480 --> 00:06:15.239
followed by the name of your Gnus server or account,
00:06:15.240 --> 00:06:17.199
followed by the word "login",
00:06:17.200 --> 00:06:19.199
then your login username,
00:06:19.200 --> 00:06:23.959
and then the password, which here it's not shown.
00:06:23.960 --> 00:06:26.599
Yeah.
NOTE Configuration
00:06:26.600 --> 00:06:28.679
But before we actually set this,
00:06:28.680 --> 00:06:31.479
I'll just show you that if we like start Gnus
00:06:31.480 --> 00:06:33.719
with M-x gnus,
00:06:33.720 --> 00:06:36.439
initially, it will just show
00:06:36.440 --> 00:06:37.759
an error like this.
00:06:37.760 --> 00:06:40.399
Even if we continue, it's empty.
00:06:40.400 --> 00:06:43.399
There's not much because Gnus doesn't know
00:06:43.400 --> 00:06:47.039
where to fetch these emails from.
00:06:47.040 --> 00:06:52.159
And that's what we will configure.
00:06:52.160 --> 00:06:55.859
Excuse me.
00:06:55.860 --> 00:06:57.559
Yeah, so just for convenience,
00:06:57.560 --> 00:06:59.079
we can bind Gnus to,
00:06:59.080 --> 00:07:00.679
for example, C-c g, as I've done here.
00:07:00.680 --> 00:07:04.119
You will want to set your name
00:07:04.120 --> 00:07:05.799
and email address, like so.
00:07:05.800 --> 00:07:09.239
Here we tell Emacs
00:07:09.240 --> 00:07:11.439
that we are going to be using Gnus for reading email,
00:07:11.440 --> 00:07:12.839
because Emacs comes
00:07:12.840 --> 00:07:14.759
with other email clients as well,
00:07:14.760 --> 00:07:18.559
such as Rmail, and in fact, defaults to Rmail,
00:07:18.560 --> 00:07:24.839
so this way, we tell it to use Gnus.
00:07:24.840 --> 00:07:31.559
By default, Gnus puts its newsrc file and other files,
00:07:31.560 --> 00:07:34.319
I believe it still scatters them
00:07:34.320 --> 00:07:35.439
in a few different directories
00:07:35.440 --> 00:07:36.279
in your home directory,
00:07:36.280 --> 00:07:37.399
so it's a little bit messy.
00:07:37.400 --> 00:07:40.039
So what I prefer to do is to just put it
00:07:40.040 --> 00:07:42.439
all under the Gnus directory
00:07:42.440 --> 00:07:47.439
inside of my Emacs configuration, as I do here.
00:07:47.440 --> 00:07:50.639
Yeah, and then here we just tell Gnus
00:07:50.640 --> 00:07:53.319
to, like, don't try to bother
00:07:53.320 --> 00:07:55.759
with a generic newsrc file
00:07:55.760 --> 00:07:57.119
that would be shared
00:07:57.120 --> 00:07:58.399
with other news readers.
00:07:58.400 --> 00:07:59.679
Just want to use it for email.
00:07:59.680 --> 00:08:01.959
And yeah, so we just tell Gnus
00:08:01.960 --> 00:08:03.039
to keep all of its data
00:08:03.040 --> 00:08:08.079
inside a dedicated .newsrc.eld
00:08:08.080 --> 00:08:12.159
(for Emacs Lisp data) file instead.
00:08:12.160 --> 00:08:15.199
And we can also have Gnus not prompt us
00:08:15.200 --> 00:08:19.679
when we want to exit with q.
00:08:19.680 --> 00:08:23.399
Anyway, so let's go ahead and evaluate this.
00:08:23.400 --> 00:08:25.719
So this has been set,
NOTE Starting Gnus
00:08:25.720 --> 00:08:32.267
so if we type M-x gnus again, or hit C-c g,
00:08:32.268 --> 00:08:35.699
now we're faced with an empty buffer,
00:08:35.700 --> 00:08:37.399
and it says no news is good news,
00:08:37.400 --> 00:08:38.399
and that's actually
00:08:38.400 --> 00:08:40.719
one of the characteristics of Gnus
00:08:40.720 --> 00:08:44.779
is that by default it tries
00:08:44.780 --> 00:08:47.619
to like sort of declutter
00:08:47.620 --> 00:08:49.199
and show us a little less possible
00:08:49.200 --> 00:08:50.819
in the group buffer,
00:08:50.820 --> 00:08:53.259
meaning that if you don't have
00:08:53.260 --> 00:08:55.639
any groups with unread or marked
00:08:55.640 --> 00:09:00.119
or, like, starred messages, it will not show them.
00:09:00.120 --> 00:09:03.959
To actually see all of our groups or folders,
00:09:03.960 --> 00:09:08.359
we hit shift L or capital L,
00:09:08.360 --> 00:09:12.419
and we see that we have an inbox here,
00:09:12.420 --> 00:09:14.879
as expected. So we enter the inbox,
00:09:14.880 --> 00:09:17.459
and we see that there is an article there
00:09:17.460 --> 00:09:20.779
and it's already been marked as read.
00:09:20.780 --> 00:09:22.679
But if we mark it as unread
00:09:22.680 --> 00:09:25.959
and exit and enter Gnus again,
00:09:25.960 --> 00:09:27.279
this is what we would see.
00:09:27.280 --> 00:09:28.839
We would see that our group
00:09:28.840 --> 00:09:34.099
and then we enter it, we see our mail here.
00:09:34.100 --> 00:09:36.159
Yeah, and this is our very first email
00:09:36.160 --> 00:09:40.079
that we read in GNU Emacs here, inside Gnus.
NOTE Always showing groups
00:09:40.080 --> 00:09:43.839
It might be useful to have Gnus always show
00:09:43.840 --> 00:09:46.839
certain groups or folders
00:09:46.840 --> 00:09:48.319
even if they don't have
00:09:48.320 --> 00:09:52.339
anything unread or marked inside of them.
00:09:52.340 --> 00:09:56.039
The way we can do that is
00:09:56.040 --> 00:09:57.599
by setting this variable
00:09:57.600 --> 00:10:01.339
gnus-permanently-visible-groups
00:10:01.340 --> 00:10:03.039
to a regular expression
00:10:03.040 --> 00:10:09.119
that describes the name of these groups.
00:10:09.120 --> 00:10:11.539
So if we launch Gnus again,
00:10:11.540 --> 00:10:14.759
this time, we see that that group is visible,
00:10:14.760 --> 00:10:19.899
even though there's no unread messages in it.
NOTE Reading messages
00:10:19.900 --> 00:10:24.399
When we enter a group or folder,
00:10:24.400 --> 00:10:26.719
we will see a list of all of our messages.
00:10:26.720 --> 00:10:27.799
Here, we only have one.
00:10:27.800 --> 00:10:31.939
We can press M-u or Alt-u
00:10:31.940 --> 00:10:34.679
to mark something as unread.
00:10:34.680 --> 00:10:38.539
You can press d to mark it as read.
00:10:38.540 --> 00:10:40.079
If you press just u,
00:10:40.080 --> 00:10:41.959
it'll tick the article,
00:10:41.960 --> 00:10:44.039
which is kind of the equivalent
00:10:44.040 --> 00:10:46.999
of marking the message or email
00:10:47.000 --> 00:10:50.539
as starred in other email clients
00:10:50.540 --> 00:10:55.719
such as Thunderbird.
00:10:55.720 --> 00:11:00.639
We see that when there are groups
00:11:00.640 --> 00:11:03.959
that have starred or ticked messages
00:11:03.960 --> 00:11:04.679
inside of them,
00:11:04.680 --> 00:11:05.599
Gnus will mark them
00:11:05.600 --> 00:11:16.019
with this little star here, or asterisk.
00:11:16.020 --> 00:11:17.639
This talk is just barely
00:11:17.640 --> 00:11:19.039
scratching the surface.
00:11:19.040 --> 00:11:21.080
Let's see how far...
00:11:21.081 --> 00:11:22.759
How am I doing with the time?
00:11:22.760 --> 00:11:30.119
Okay, 11 minutes already.
NOTE Debugging IMAP
00:11:30.120 --> 00:11:32.079
Just a couple of helpful things here,
00:11:32.080 --> 00:11:36.919
like this nnimap-record-commands variable.
00:11:36.920 --> 00:11:38.519
It's useful when you want to debug
00:11:38.520 --> 00:11:40.119
your IMAP setup with Gnus.
00:11:40.120 --> 00:11:42.859
If you set it to anything non-nil,
00:11:42.860 --> 00:11:46.699
it will log the commands that it runs
00:11:46.700 --> 00:11:49.539
to a special `*imap log*` buffer.
00:11:49.540 --> 00:11:50.719
And here I just set it
00:11:50.720 --> 00:11:52.679
to this init-file-debug variable,
00:11:52.680 --> 00:11:55.159
which is set to non-nil
00:11:55.160 --> 00:11:56.439
whenever you launch Emacs
00:11:56.440 --> 00:11:59.279
with the --debug-init switch,
00:11:59.280 --> 00:12:02.239
so that's pretty helpful.
00:12:02.240 --> 00:12:05.119
You want to also set your sent folder,
00:12:05.120 --> 00:12:07.479
basically, where Gnus will save
00:12:07.480 --> 00:12:09.439
a copy of the message that you just sent.
00:12:09.440 --> 00:12:12.799
Normally, I think the convention these days is,
00:12:12.800 --> 00:12:16.599
a lot of you know servers and clients
00:12:16.600 --> 00:12:18.799
use a dedicated sent folder,
00:12:18.800 --> 00:12:24.339
but with Gnus, I just prefer to use INBOX itself.
00:12:24.340 --> 00:12:27.119
Mainly because then I will have
00:12:27.120 --> 00:12:28.759
threading working for free,
00:12:28.760 --> 00:12:31.939
so I can read the entire thread
00:12:31.940 --> 00:12:34.299
of an email chain there in one place.
00:12:34.300 --> 00:12:35.319
Of course, we don't have to keep
00:12:35.320 --> 00:12:38.899
the messages in there forever.
00:12:38.900 --> 00:12:42.079
And in fact, Gnus has facilities,
00:12:42.080 --> 00:12:43.479
both manual and automated,
00:12:43.480 --> 00:12:45.999
for expiring emails into
00:12:46.000 --> 00:12:52.679
different locations or different folders.
00:12:52.680 --> 00:12:55.159
Yeah. So let's move on here.
NOTE Topics
00:12:55.160 --> 00:13:02.039
Topics are another nice feature of Gnus.
00:13:02.040 --> 00:13:03.279
So this is useful
00:13:03.280 --> 00:13:05.359
for creating some topics
00:13:05.360 --> 00:13:08.459
and then classifying or grouping
00:13:08.460 --> 00:13:10.599
your directories there.
00:13:10.600 --> 00:13:11.799
So we will see the use
00:13:11.800 --> 00:13:13.639
of this in a moment,
00:13:13.640 --> 00:13:17.019
where, let's say, I want to add
00:13:17.020 --> 00:13:19.999
a second account to Gnus.
00:13:20.000 --> 00:13:23.559
This one I'm going to call ec25work.
00:13:23.560 --> 00:13:24.679
Let's pretend that
00:13:24.680 --> 00:13:29.859
this is my work email.
00:13:29.860 --> 00:13:32.479
So if we open Gnus now,
00:13:32.480 --> 00:13:36.999
we see that our work INBOX
00:13:37.000 --> 00:13:37.959
also shows up here.
00:13:37.960 --> 00:13:41.299
And because we enabled topic mode,
00:13:41.300 --> 00:13:42.359
we see that we have
00:13:42.360 --> 00:13:43.439
these sort of buttons
00:13:43.440 --> 00:13:44.839
like Gnus and misc here.
00:13:44.840 --> 00:13:46.679
And we can, I believe,
00:13:46.680 --> 00:13:49.799
create a topic with capital T n.
00:13:49.800 --> 00:13:52.879
We can call it personal, this one.
00:13:52.880 --> 00:13:56.939
Let's create another one, work.
00:13:56.940 --> 00:13:59.579
And then what we can do is go
00:13:59.580 --> 00:14:02.799
over the directory that we want,
00:14:02.800 --> 00:14:04.759
for example, this one,
00:14:04.760 --> 00:14:08.219
hit capital T m to move it
00:14:08.220 --> 00:14:11.899
to the personal topic,
00:14:11.900 --> 00:14:13.079
and this work one,
00:14:13.080 --> 00:14:15.199
move it to the work topic.
00:14:15.200 --> 00:14:17.439
So we can nicely classify
00:14:17.440 --> 00:14:23.119
and group our groups folders here,
00:14:23.120 --> 00:14:24.719
which is especially useful
00:14:24.720 --> 00:14:25.559
when you have hundreds of them.
NOTE Customizing message display
00:14:25.560 --> 00:14:29.759
Anyhow, we can customize
00:14:29.760 --> 00:14:35.039
different aspects of message display.
00:14:35.040 --> 00:14:35.839
Like for example,
00:14:35.840 --> 00:14:38.199
we can this way customize
00:14:38.200 --> 00:14:39.199
and change the order of
00:14:39.200 --> 00:14:41.599
which headers we want to see and where.
00:14:41.600 --> 00:14:45.199
So if I launch Gnus
00:14:45.200 --> 00:14:48.459
and go back to this email here,
00:14:48.460 --> 00:14:52.139
these are the headers that we see at the top.
00:14:52.140 --> 00:14:52.639
Excuse me.
00:14:52.640 --> 00:14:55.159
And with Gnus we can always
00:14:55.160 --> 00:14:57.799
We can have it show all the headers
00:14:57.800 --> 00:15:01.999
by pressing t to toggle the headers.
00:15:02.000 --> 00:15:04.579
Here we can see all the nitty-gritty
00:15:04.580 --> 00:15:06.359
and all of the headers in the message
00:15:06.360 --> 00:15:12.219
and we can toggle it back with t again.
00:15:12.220 --> 00:15:16.479
We can modify and customize the sorting
00:15:16.480 --> 00:15:20.019
with dedicated sorting functions.
00:15:20.020 --> 00:15:20.999
It comes with a number of them
00:15:21.000 --> 00:15:21.599
out of the box
00:15:21.600 --> 00:15:24.319
but we can define them as well.
NOTE Sending emails
00:15:24.320 --> 00:15:29.759
Now to send emails. Let's see.
00:15:29.760 --> 00:15:30.999
We will be using message,
00:15:31.000 --> 00:15:34.939
and that's what Gnus itself uses.
00:15:34.940 --> 00:15:38.579
So I will set things up here.
00:15:38.580 --> 00:15:42.639
Let's see.
00:15:42.640 --> 00:15:44.519
Okay, so first of all,
00:15:44.520 --> 00:15:46.439
we want to have Gnus mark
00:15:46.440 --> 00:15:48.519
the messages that we write to others
00:15:48.520 --> 00:15:49.759
as read automatically,
00:15:49.760 --> 00:15:51.359
so this option does that.
00:15:51.360 --> 00:15:58.039
And then we define posting styles this way
00:15:58.040 --> 00:16:01.619
using the prefix, the name
00:16:01.620 --> 00:16:04.359
of the IMAP server.
00:16:04.360 --> 00:16:06.519
And this is how we can tell it to use
00:16:06.520 --> 00:16:09.199
what email address for the From [header]
00:16:09.200 --> 00:16:14.599
and which SMTP server to send it with.
00:16:14.600 --> 00:16:17.879
Yeah, and then gcc is where Gnus will save
00:16:17.880 --> 00:16:20.199
the copy of the messages that we write.
00:16:20.200 --> 00:16:24.139
So if we go ahead and launch Gnus again.
00:16:24.140 --> 00:16:26.279
We can go into our personal email here,
00:16:26.280 --> 00:16:28.919
hit m to compose a new message.
00:16:28.920 --> 00:16:33.559
We can prepare an email to,
00:16:33.560 --> 00:16:35.119
let's say, our work address.
00:16:35.120 --> 00:16:42.419
Hello from EmacsConf 2025 Gnus talk.
00:16:42.420 --> 00:16:47.639
Hello, this is just a test. :)
00:16:47.640 --> 00:16:55.739
Yeah, and we hit send.
00:16:55.740 --> 00:16:56.919
The sending will be done
00:16:56.920 --> 00:17:03.479
using Emacs's built-in SMTP libraries.
00:17:03.480 --> 00:17:05.119
Sometimes it can take a moment.
00:17:05.120 --> 00:17:07.599
Okay, that's it. It's done.
00:17:07.600 --> 00:17:09.259
So if we go back out
00:17:09.260 --> 00:17:11.559
and if we hit g to get new news,
00:17:11.560 --> 00:17:15.679
we should be able to see our new email there
00:17:15.680 --> 00:17:17.639
in the other account that we just sent it to.
00:17:17.640 --> 00:17:22.360
So we can come here, open it,
00:17:22.361 --> 00:17:26.659
and there we go.
NOTE Plans
00:17:26.660 --> 00:17:29.239
There is a lot to configure in Gnus,
00:17:29.240 --> 00:17:31.439
and we're just barely scratching the surface,
00:17:31.440 --> 00:17:34.079
and unfortunately I don't have the time
00:17:34.080 --> 00:17:34.999
to explain all of these
00:17:35.000 --> 00:17:36.519
but I do plan on doing
00:17:36.520 --> 00:17:38.839
a much longer running series,
00:17:38.840 --> 00:17:41.499
whether it's text or videos,
00:17:41.500 --> 00:17:42.879
showing how to configure
00:17:42.880 --> 00:17:45.319
and use a lot of these different aspects of Gnus.
00:17:45.320 --> 00:17:49.519
But yeah, here, near the end, just a couple of...
00:17:49.520 --> 00:17:54.919
quick things. I find it's nice to have message
00:17:54.920 --> 00:17:56.519
prompt us for [confirmation]
00:17:56.520 --> 00:17:59.199
that we do want to send a message.
00:17:59.200 --> 00:18:01.359
Actually, when it does that, I take
00:18:01.360 --> 00:18:02.599
another look over my email
00:18:02.600 --> 00:18:07.059
to make sure I don't have any typos.
00:18:07.060 --> 00:18:09.519
It's generally a good idea to wrap your messages
00:18:09.520 --> 00:18:14.119
around 70 or 72 characters.
00:18:14.120 --> 00:18:16.619
We do that here.
00:18:16.620 --> 00:18:19.159
We can tell Gnus to forward messages
00:18:19.160 --> 00:18:22.599
as a proper MIME part,
00:18:22.600 --> 00:18:27.059
instead of some half-broken way.
00:18:27.060 --> 00:18:30.119
This customization, the sendmail function,
00:18:30.120 --> 00:18:34.239
is how we tell Gnus with message
00:18:34.240 --> 00:18:38.239
to use the SMTP library to sending the email,
00:18:38.240 --> 00:18:42.479
and these two variables are useful for
00:18:42.480 --> 00:18:45.959
omitting our own email address
00:18:45.960 --> 00:18:47.439
when we want to send someone,
00:18:47.440 --> 00:18:50.179
like when we hit r, to reply to someone.
00:18:50.180 --> 00:18:51.959
if we configure these variables,
00:18:51.960 --> 00:18:52.959
then Gnus won't add
00:18:52.960 --> 00:18:56.059
our own address to the To or Cc,
00:18:56.060 --> 00:18:58.479
which is pretty useful.
00:18:58.480 --> 00:18:59.919
I also find it helpful
00:18:59.920 --> 00:19:03.359
to unbind C-c C-s.
00:19:03.360 --> 00:19:04.974
That's another key
00:19:04.975 --> 00:19:06.319
for sending the message [in addition to C-c C-c].
00:19:06.320 --> 00:19:09.719
And because C-c C-d,
00:19:09.720 --> 00:19:13.359
which is very close to it on the QWERTY layout,
00:19:13.360 --> 00:19:15.719
is useful for saving a draft
00:19:15.720 --> 00:19:16.839
and then coming back to it,
00:19:16.840 --> 00:19:20.079
I don't want to accidentally hit C-c C-s,
00:19:20.080 --> 00:19:22.039
and send the message prematurely.
00:19:22.040 --> 00:19:25.979
So I unbind it.
00:19:25.980 --> 00:19:27.959
Yeah, anyway, that's about it.
NOTE Wrapping up
00:19:27.960 --> 00:19:31.039
That's a kind of very quick tour
00:19:31.040 --> 00:19:37.119
and introduction of setting up Gnus.
00:19:37.120 --> 00:19:40.719
Here, we just configured a remote IMAP server,
00:19:40.720 --> 00:19:43.519
but we can also, of course,
00:19:43.520 --> 00:19:46.359
set up a local IMAP server such as Dovecot
00:19:46.360 --> 00:19:48.399
and point Gnus to there,
00:19:48.400 --> 00:19:52.799
and use programs like OfflineIMAP, I believe,
00:19:52.800 --> 00:19:57.479
or the mbsync program from isync package
00:19:57.480 --> 00:20:02.939
or isync project to synchronize our messages
00:20:02.940 --> 00:20:04.479
to local mail directories
00:20:04.480 --> 00:20:06.279
and then point Gnus to it.
00:20:06.280 --> 00:20:08.359
The reason we might want to use that
00:20:08.360 --> 00:20:11.719
is to always have a copy of our messages at hand
00:20:11.720 --> 00:20:12.759
so we can use offline.
NOTE nnimap
00:20:12.760 --> 00:20:17.439
And why use nnimap specifically?
00:20:17.440 --> 00:20:27.399
As of now, the Maildir backend included with Gnus
00:20:27.400 --> 00:20:29.679
is very inefficient,
00:20:29.680 --> 00:20:31.399
especially when dealing with
00:20:31.400 --> 00:20:33.839
tens or hundreds of thousands of messages
00:20:33.840 --> 00:20:36.659
like some of us are.
00:20:36.660 --> 00:20:38.759
It just takes an eternity to try
00:20:38.760 --> 00:20:43.259
and index them and get going.
00:20:43.260 --> 00:20:44.639
In that case, what I recommend doing
00:20:44.640 --> 00:20:47.799
is instead of interfacing directly with Maildir,
00:20:47.800 --> 00:20:52.359
for Gnus, just install and run
00:20:52.360 --> 00:20:54.359
Dovecot, a local IMAP server,
00:20:54.360 --> 00:20:59.819
and point Gnus to that.
00:20:59.820 --> 00:21:02.959
I plan on writing tutorials or doing videos
00:21:02.960 --> 00:21:06.639
about these other aspects
00:21:06.640 --> 00:21:10.519
of configuring Gnus after the conference.
00:21:10.520 --> 00:21:11.439
That's about it for me,
00:21:11.440 --> 00:21:14.119
so I hope you find this helpful.
00:21:14.120 --> 00:21:16.679
If you have any questions,
00:21:16.680 --> 00:21:18.239
please feel free to email me
00:21:18.240 --> 00:21:23.759
at bandali@gnu.org or @kelar.org.
00:21:23.760 --> 00:21:25.879
You can take a look at my personal website
00:21:25.880 --> 00:21:26.839
where I plan on posting
00:21:26.840 --> 00:21:31.059
other Emacs and Gnus materials.
00:21:31.060 --> 00:21:33.039
And yeah, thank you for watching
00:21:33.040 --> 00:21:35.159
and I hope you enjoy the rest of the conference.
00:21:35.160 --> 00:21:37.760
Take care.
|